我有一个包含很多 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
变量中。也许,最简单的就是添加:PATH
ls
alias
. ~/.bashrc
到你的脚本。