我已经从文件中读取了一行 bash 代码,我想将它发送到日志中。为了使它更有用,我想发送该行的可变扩展版本。
我只想扩展 shell 变量。我不想解释管道,也不想产生任何副进程,比如用$( rm -r /)
.
我知道变量扩展深深地融入了 bash。我希望有一种方法可以只执行扩展,而不会产生任何副作用,这将来自管道、外部程序和——也许——here-documents。
也许有类似的东西eval
?
#!/bin/bash
linenr=42
line=`sed "${linenr}q;d" my-other-script.sh`
shell-expand $line >>mylog.log
我想要一种仅扩展 shell 变量的方法。如果x=a
,a="example"
那么我想要以下扩展:
echo $x
应该是echo a
。
echo ${a}
应该echo example
touch ${!x}.txt
应该touch example.txt
if [ (( ${#a} - 6 )) -gt 10 ]; then echo "Too long string"
应该if [ 1 -gt 10 ]; then echo "Too long string"
echo "\$a and \$x">/dev/null
应该echo "\$a and \$x>dev/null"