我有一个test.sh
如下所示的 shell 脚本。
sudo -H sh -c '
echo $1;
'
但是当我运行这个脚本时,./test.sh abcd
它没有回显任何东西。然后我改变了我的脚本,如下所示。
sudo -H sh -c '
echo \$1;
'
但现在,它显示输出为$1
. 我需要在此处进行哪些修改才能获得输出为abcd
. 请提供建议,因为我是 shell 脚本的初学者。
谢谢。
尝试这个:
sudo -H sh -c "
echo $1;
"
sudo
在新的 shell 中运行命令,该 shell 对传递给其父级的参数一无所知,因此您需要在新的(子)shell 中运行命令字符串之前扩展它们。
尝试:
sudo -H sh -c '
echo "$1";
' argv0 "$1"
从bash
手册页:
man bash | less -Ip '-c string'
# -c string If the -c option is present, then commands are read from
# string. If there are arguments after the string, they are
# assigned to the positional parameters, starting with $0.