执行shell脚本时出现问题

时间:2011-06-17 04:57:39

标签: shell unix

我是shell脚本新手。我的目标是通过shell脚本执行ls命令,但它不会返回任何内容。我的是BASH外壳

set p = `/bin/ls`
echo $p

我哪里出错

4 个答案:

答案 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

......在一行?