shell bash脚本中的变量和参数:你能解释一下这种行为并找到一种方法让它像我期望的那样工作吗

3zwjbxry  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(72)

只是想知道是否有任何bashMaven可以帮助我们找到一种方法,在两种情况下获得相同的行为,在下面的代码中的2个结果。我希望能够得到与变量(result1)相同的结果,但需要传递一个参数(result2)。也许这是不可能的,无论争论...

密码

#!/bin/sh

var1="$(ls)"
echo -------var1-------
echo $var1

var2=$1
echo -------var2-------
echo $var2

# execute ls with variable
result1=$(file ${var1})

# execute ls with script argument
result2=$(file ${var2})

echo ------ result1 ------
echo $result1
echo ---------------------

echo ------ result2 ------
echo $result2
echo ---------------------

字符串

命令和结果

>./test.sh '$(ls)'

-------var1-------
myzipfile.zip test.sh
-------var2-------
$(ls)
------ result1 ------
myzipfile.zip: Zip archive data, at least v2.0 to extract
test.sh: POSIX shell script, ASCII text executable
---------------------
------ result2 ------
$(ls): cannot open `$(ls)' (No such file or directory)
---------------------

4urapxun

4urapxun1#

您必须使用eval将变量作为bash代码处理。

eval "var2=\"$1\""

字符串
如果脚本参数来自执行脚本的用户无法控制的地方,则不应使用这样的命令,因为它们可能会在$1中放置危险的命令。

相关问题