var=$(echo "asdf")echo $var# => asdf
使用此方法,将立即计算该命令并存储其返回值。stored_date=$(date)echo $stored_date# => Thu Jan 15 10:57:16 EST 2015# (wait a few seconds)echo $stored_date#
=> Thu Jan 15 10:57:16 EST 2015
背勾也一样stored_date=`date`echo $stored_date# => Thu Jan 15 11:02:19 EST 2015# (wait a few seconds)echo $stored_date#
=> Thu Jan 15 11:02:19 EST 2015
在$(...)将不会在以后对其进行评估。stored_date=$(eval "date")echo $stored_date# => Thu Jan 15 11:05:30 EST 2015# (wait a few seconds)echo $stored_date#
=> Thu Jan 15 11:05:30 EST 2015
使用val时,将在下列情况下对其进行计算eval使用stored_date="date" # Thu Jan 15 11:07:05 EST 2015#
(wait a few seconds)echo $(eval "$stored_date")# => Thu Jan 15 11:07:16 EST 2015#
^^ Time changed
在上面的示例中,如果需要运行带有参数的命令,请将它们放在要存储的字符串中。stored_date="date -u"# ...
对于bash脚本,这很少相关,但最后一个注意事项。小心eval..只有您控制的字符串,而不是来自不受信任用户的字符串或从不受信任的用户输入生成的字符串。