我是shell脚本新手。我的目标是通过shell脚本执行ls命令,但它不会返回任何内容。我的是BASH外壳
set p = `/bin/ls`
echo $p
我哪里出错
答案 0 :(得分:4)
对于bash来说,这样做的方法是
p="$(/bin/ls)"
# Could have done p=`/bin/ls` too, but $( is the newer way
echo "$p"
set
命令不适用于标准变量赋值。
答案 1 :(得分:4)
一个简单的
p=`/bin/ls`
虽然我更喜欢$()
构造,但它很容易嵌套:
pax$ p=$(/bin/ls)
pax$ echo $p
clients.dat clientupdate.sh
你的set
做了什么(在处理所有有效的开关以设置shell属性之后,没有)是将参数分配给$n
参数:
pax$ set p = `/bin/ls`
pax $ echo xx $1 xx $2 xx $3 xx $4 xx $5
xx p xx = xx clients.dat xx clientupdate.sh xx xx
来自man bash_builtins
页面:
处理选项后剩余的任何参数都被视为位置参数的值,并按顺序分配给
$1, $2, ... $n
。
答案 2 :(得分:0)
在为变量赋值时,Bash语法不会放入空格,所以这样做:
p=`/bin/ls`
echo $p
答案 3 :(得分:0)
你不能只写......
/bin/ls
......在一行?