Bash将Shell命令的输出分配给变量
时间:2020-01-09 10:45:55 来源:igfitidea点击:
如何在类似操作系统的Unix下将shell命令的输出分配给shell变量?
例如,如何将date命令的输出存储到一个名为$now的变量中。
你是怎样做的?
如何在Bash中将变量设置为命令的输出?
您需要使用bash的命令替换功能。
它允许您运行shell命令并将其输出存储到bash变量。
Bash将Shell命令的输出分配给并存储到变量
要将任何shell命令的输出分配给bash中的变量,请使用以下命令替换语法: |-| |难度|容易(rss)| | root特权|否| |要求|重击| |时间| 2m |
var=$(command-name-here) var=$(command-name-here arg1) var=$(/path/to/command) var=$(/path/to/command arg1 arg2)
或者使用如下基于反引号的语法将Linux命令的输出分配给变量:
var=`command-name-here` var=`command-name-here arg1` var=`/path/to/command` var=`/path/to/command arg1 arg2`
等号和命令必须位于=
的右侧之后,请勿放置任何空格。
有关更多信息,请参见如何为shell变量赋值。
例子
让我们看一些运行bash的Linux,macOS,* BSD和类Unix系统的常见示例。
BASH命令输出到变量
要将日期命令输出存储到名为" now"的变量中,请执行:
## store date command output to $now ## now=$(date)
或者
## alternate syntax ## now=`date`
要显示返回结果(或者输出存储在名为$now的变量中),请使用echo或者printf命令:
echo "$now" printf "%s\n" "$now"
输出示例:
Wed Apr 25 00:55:45 IST 2012
您可以按以下方式组合echo命令和shell变量:
echo "Today is $now"
输出示例:
Today is Wed Apr 25 00:55:45 IST 2012
您可以在echo命令本身中进行命令替换(无需使用shell变量):
echo "Today is $(date)" printf "Today is %s\n" "$(date)"
输出示例:
Today is Wed Apr 25 00:57:58 IST 2011
如何使用多行命令
尝试以下语法:
my_var=$(command \ arg1 \ arg2 \ arg3 ) echo "$my_var"
例如,
## date example ## OUT=$(date \ --date='TZ="America/Los_Angeles" 09:00 next Thu') echo "$OUT"
另一个适用于您的ping命令示例:
#!/bin/bash _ping="/bin/ping" domain="www.theitroad.local" ping_avg="$(${_ping} \ -q \ -c 4 \ ${domain} | grep rtt)" echo "Avg ping time for ${domain} : ${ping_avg}"