如何导航到 bash 脚本中的上一行

如何导航到 bash 脚本中的上一行

我有一个包含很多 if/elif 语句的 bash 脚本。

有没有办法获取命令的输出,并使其执行关联的 if/elif 语句,而不是命令的默认版本?

例如,在主脚本中,我有以下内容:

if [ "$command" == "ls" ]
then
    ls -la
elif # ...(hundreds more if/elif statements here) ...

fi

如果我执行:

echo "ls" >> tempcommand; bash tempcommand

在我的脚本中,是否可以ls通过主脚本中的上述指定 if 语句来通过管道传输该执行中的命令?

答案1

我和你有同样的用例:

我的ls实现:

$ cat ~/bin/ls
#!/bin/bash

LD_LIBRARY_PATH=/path/sid-chroot/usr /path/sid-chroot/bin/ls "$@"
$ ls --version 
ls (GNU coreutils) 9.1
$ /bin/ls --version 
ls (GNU coreutils) 8.32

我有一个别名:

$ type ls
ls is aliased to `ls --color=auto -F'

一切都按预期进行。

ls您需要将早期的实现放入PATH环境变量中。

因此,在您的情况下,您需要将您的目录和定义添加到tempcommand变量中。也许,最简单的就是添加:PATHlsalias

. ~/.bashrc

到你的脚本。

相关内容