这是使用一个参数运行的脚本的简化版本
#!/bin/bash
K1=eval /usr/bin/urlencode "$1"
echo "$K1" # prints the correct url encoded $1 parameter
echo "$K1" # nothing printed
我查看了其他更复杂的问题/答案,以了解为什么变量会丢失其内容
此外,如果我尝试在其他值(如
$K1
)中使用它,那么在任何时候都不会回显K2="zgrep $K1$DIR
,我就会失去它的价值。回显 $K2
打印 zgrep $DIR
值
使用
bash -x
运行此命令将很容易发现,echo
两次都会输出变量的值。您在 K1="eval"
命令的持续时间内分配 urelencode
,其结果只是显示在标准输出上。
我猜你想说的是
k1=$(urlencode "$1")
echo "$k1"
echo "$k1"
这是一个非常常见的初学者问题。