Linux · 2022年7月7日 0

(Shell) 把某个命令的运行结果用作变量

1.使用$()可以把某个命令的运行结果用作变量,支持嵌套。

dirname命令可获取某个文件所在的绝对路径。

例:

#!/bin/bash

#查找test.sh,并获取test.sh的绝对路径
dirname $(find / -name test.sh)

#删除test.sh所在的目录
rm -rf $(dirname $(find / -name test.sh))

2.还有另一种方式是使用反引号`命令`,把某个命令用作变量。

例:

#!/bin/bash

#查找test.sh
File=`find / -name test.sh`

#运行test.sh
bash $File

3.使用${}可以替换变量。

例:

#!/bin/bash

#设置颜色
#黑色
Black="\033[30m"

#红色
Red="\033[31m"

#绿色
Green="\033[32m"

#黄色
Yellow="\033[33m"

#蓝色
Blue="\033[34m"

#紫色
Purple="\033[35m"

#深绿色
DarkGreen="\033[36m"

#白色
White="\033[37m"

#结束
End="\033[0m"

#用${}来使用颜色代码,让字符串显示相应的颜色
read -p $(echo -e "${Green}请输入密码:${End}") Passwd
echo -e "${Green}你的密码是:${End}""${Red}"$Passwd"${End}"

4.扩展用法,使用函数。

例:

#!/bin/bash

#设置颜色
Color() {
if [ "$1" == "Green?" ];then
      read -r -p $(echo -e "\033[32m$2\033[0m") Passwd
elif [ "$1" == "Green" ];then
      echo -e "\033[32m$2\033[0m"
elif [ "$1" == "Red" ];then
      echo -e "\033[31m$2\033[0m"
fi
}

Color Green? "请输入密码:"
Color Green "你的密码是:$(Color Red "$Passwd")"