0

我有一个test.sh如下所示的 shell 脚本。

sudo -H sh -c '
    echo $1;    
'

但是当我运行这个脚本时,./test.sh abcd它没有回显任何东西。然后我改变了我的脚本,如下所示。

sudo -H sh -c '
    echo \$1;    
'

但现在,它显示输出为$1. 我需要在此处进行哪些修改才能获得输出为abcd. 请提供建议,因为我是 shell 脚本的初学者。

谢谢。

4

2 回答 2

2

尝试这个:

sudo -H sh -c "
  echo $1;    
"

sudo在新的 shell 中运行命令,该 shell 对传递给其父级的参数一无所知,因此您需要在新的(子)shell 中运行命令字符串之前扩展它们。

于 2013-07-30T07:06:08.200 回答
1

尝试:

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.
于 2013-07-30T07:26:44.547 回答