草庐IT

BASH_SOURCE

全部标签

linux - 为什么 `sh myscript` 和 `source myscript` 之间的 $0 不同?

我有一个非常简单的shell脚本名称test.sh:[mylinux~]$cattest.shecho"a"echo"${0}"但是,当我source和sh时,结果完全不同:[mylinux~]$shtest.shatest.sh[mylinux~]$sourcetest.sharray:x,y0,x1,x我看不懂sourcetest.sh的结果,而且,我把test.sh改名后,结果也变了:[mylinux~]$mvtest.sha.sh[mylinux~]$sourcea.sha-bash如何理解这种现象?顺便说一句,第二个奇怪的结果只存在于我的一个远程linuxsession中,在

linux - 为什么 `sh myscript` 和 `source myscript` 之间的 $0 不同?

我有一个非常简单的shell脚本名称test.sh:[mylinux~]$cattest.shecho"a"echo"${0}"但是,当我source和sh时,结果完全不同:[mylinux~]$shtest.shatest.sh[mylinux~]$sourcetest.sharray:x,y0,x1,x我看不懂sourcetest.sh的结果,而且,我把test.sh改名后,结果也变了:[mylinux~]$mvtest.sha.sh[mylinux~]$sourcea.sha-bash如何理解这种现象?顺便说一句,第二个奇怪的结果只存在于我的一个远程linuxsession中,在

linux - 如何在使用 bash 更改文件名和扩展名的同时将多个文件移动到一个目录?

/opt/dir/ABC/中有多个名为allfile_123-abcallfile_123-defallfile_123-ghiallfile_123-xxx的文件。我需要将文件命名为new_name-abc.pgpnew_name-def.pgpnew_name-ghi.pgpnew_name-xxx.pgp然后移动到/usr/tst/outputforfilein/opt/dir/ABC/allfile_123*;domv$file/usr/tst/output/"$file.pgp";renameallfile_123new_name/usr/tst/output/*.pgp;d

linux - 如何在使用 bash 更改文件名和扩展名的同时将多个文件移动到一个目录?

/opt/dir/ABC/中有多个名为allfile_123-abcallfile_123-defallfile_123-ghiallfile_123-xxx的文件。我需要将文件命名为new_name-abc.pgpnew_name-def.pgpnew_name-ghi.pgpnew_name-xxx.pgp然后移动到/usr/tst/outputforfilein/opt/dir/ABC/allfile_123*;domv$file/usr/tst/output/"$file.pgp";renameallfile_123new_name/usr/tst/output/*.pgp;d

linux - 我可以在 bash 中为多个并行后台进程使用相同的变量名吗?

在下面的shell脚本中,我想在后台并行运行2个命令以加快进程,等待它们完成并在之后继续运行更多命令。由于我在两个循环中使用相同的变量名(DATASERVERNAME),这些变量是否会在后台相互干扰?我是否应该在每个循环中使用不同的变量名称,例如DATASERVERNAME_SYBASE、DATASERVERNAME_ORACLE?#!/bin/bashwhilereadDATASERVERNAMEdosomecommandsheredone 最佳答案 你的脚本是安全的,你可以通过一个小实验来揭示:#!/bin/sh-euechoA

linux - 我可以在 bash 中为多个并行后台进程使用相同的变量名吗?

在下面的shell脚本中,我想在后台并行运行2个命令以加快进程,等待它们完成并在之后继续运行更多命令。由于我在两个循环中使用相同的变量名(DATASERVERNAME),这些变量是否会在后台相互干扰?我是否应该在每个循环中使用不同的变量名称,例如DATASERVERNAME_SYBASE、DATASERVERNAME_ORACLE?#!/bin/bashwhilereadDATASERVERNAMEdosomecommandsheredone 最佳答案 你的脚本是安全的,你可以通过一个小实验来揭示:#!/bin/sh-euechoA

Linux ssh bash fork 重试 : no child processes

我在archlinux上,通过SSH访问服务器上的帐户。我已经运行了一个包含递归的bash脚本,该脚本导致“没有这样的文件或目录”的无限循环,尽管有任何中断命令ctrlC等,它仍然继续,它是完全不可中断的。这最终会导致无穷无尽的bash:fork:Nochildprocesses。发生这种情况时我无法执行任何命令,当它因“资源暂时不可用”而停止时,我无法执行任何命令来终止脚本,因为“bash:fork:没有子进程”再次启动。我不知道该怎么做,有什么帮助吗?psdoesn'twork 最佳答案 看起来你造成了forkbomb.你可以尝

Linux ssh bash fork 重试 : no child processes

我在archlinux上,通过SSH访问服务器上的帐户。我已经运行了一个包含递归的bash脚本,该脚本导致“没有这样的文件或目录”的无限循环,尽管有任何中断命令ctrlC等,它仍然继续,它是完全不可中断的。这最终会导致无穷无尽的bash:fork:Nochildprocesses。发生这种情况时我无法执行任何命令,当它因“资源暂时不可用”而停止时,我无法执行任何命令来终止脚本,因为“bash:fork:没有子进程”再次启动。我不知道该怎么做,有什么帮助吗?psdoesn'twork 最佳答案 看起来你造成了forkbomb.你可以尝

linux - 解释这个 bash 重定向行为

我正在尝试重定向和管道,但不理解某些行为。我有这段代码可以在stderr和stdout上分别生成一行:(echostdout;echostderr1>&2)似乎可以正常工作,(尝试>/devnull和2>/dev/null)。但这三个命令的行为让我感到困惑:(echostdout;echostderr1>&2)>>(wc-l)stderr1(echostdout;echostderr1>&2)2>>(wc-l)stdout1(echostdout;echostderr1>&2)>>(wc-l)2>>(wc-l)2(empty)为什么最后一个命令会合并两个流?或者还有什么事情让我的大脑崩

linux - 解释这个 bash 重定向行为

我正在尝试重定向和管道,但不理解某些行为。我有这段代码可以在stderr和stdout上分别生成一行:(echostdout;echostderr1>&2)似乎可以正常工作,(尝试>/devnull和2>/dev/null)。但这三个命令的行为让我感到困惑:(echostdout;echostderr1>&2)>>(wc-l)stderr1(echostdout;echostderr1>&2)2>>(wc-l)stdout1(echostdout;echostderr1>&2)>>(wc-l)2>>(wc-l)2(empty)为什么最后一个命令会合并两个流?或者还有什么事情让我的大脑崩