[英]Shell Script :How to pass script's command-line arguments through to commands that it invokes?
到目前为止,“ ls
”工作正常,我将目录中的所有文件都保存了。 但是现在我想当我执行./myscript ls -l /somedir
,得到的结果与在终端上键入ls -l /somedir
时得到的结果相同。
有什么办法吗? 到目前为止,这是我的代码。
#!/bin/sh
clear
echo ""
read -p "type something : " file
echo""
IFS=:
for dir in $PATH ; do
if [ -x "$dir/$file" ]
then
echo ""
exec "$dir/$file"
fi
done
据我了解(这涉及大量的猜测工作,因为问题并未明确提出),您的问题是命令行参数未通过。
使用"$@"
访问它们:
#!/bin/bash
prog=$1; shift
IFS=: read -r -a paths <<<"$PATH"
for path in "${paths[@]}"; do
[[ -x $path/$prog ]] && "$path/$prog" "$@"
done
然后,运行yourscript ls -l /foo
实际上会将-l
和/foo
传递给它们创建的ls
任何实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.