shell中的变量

简介: shell中的变量

shell中的变量

  1. shell元字符(目前发现除了{}外,创建文件(夹)没效果
  • *:匹配多个字符,eg : rm -rf *.txt,删除所有的txt文本
  • ?: 匹配一个字符 ,eg : rm -rf ?.txt ,删除名字只含一个字符的文本
  • [] : 匹配括号中任意一个,eg :rm -rf lov[abcd].txt,删除lova.txt , lovbtxt , lovc.txt , lovd.txt
  • {} : 集合,eg :mkdir /root/{aa,bb,cc} , 在root目录下创建aa,bb,cc文件夹
  • \ : 转义符,让元字符回归本意,eg : echo * 并不会输出*,echo \ * ,会输出*
  1. echo 的带色输出
  • 文本和背景颜色同时设置:echo -e “\e[37;40m This is test\e[0m” ,
  • 仅文本颜色格式:echo -e “\e[30m This is text.\e[0m” 其中30m可以替换31m,32m,…,37m,输出0m回复本色(可简写\e[0m)
  • 字体背景颜色格式:echo -e “\e[40m This is text.\e[0m” 其中40m,可替换成41m,42m,…,47m,输出0m回复本色(可简写\e[0m)
  • 颜色说明:“”之中的\e可用\033替换

echo -e “\033[30m 黑色字 \033[0m”

  echo -e “\033[31m 红色字 \033[0m”

  echo -e “\033[32m 绿色字 \033[0m”

  echo -e “\033[33m 黄色字 \033[0m”

 echo -e “\033[34m 蓝色字 \033[0m”

  echo -e “\033[35m 紫色字 \033[0m”

  echo -e “\033[36m 天蓝字 \033[0m”

  echo -e “\033[37m 白色字 \033[0m”

echo -e “\033[40;37m 黑底白字 \033[0m”

 echo -e “\033[41;37m 红底白字 \033[0m”

 echo -e “\033[42;37m 绿底白字 \033[0m”

 echo -e “\033[43;37m 黄底白字 \033[0m”

echo -e “\033[44;37m 蓝底白字 \033[0m”

 echo -e “\033[45;37m 紫底白字 \033[0m”

 echo -e “\033[46;37m 天蓝底白字 \033[0m”

 echo -e “\033[47;30m 白底黑字 \033[0m”


3.环境变量


每个脚本都是在不同的子shell中执行的,之间定义的变量不能相互访问,而环境变量可以


export 变量名 :声明一个变量为环境变量


env : 查看所有的环境变量


在一个脚本需要另一个脚本中的变量时,可以用source filename.sh或者.filename.sh(未成功)来加载(感觉就是执行了这个文件),不会建立新的子shell.


4.位置参数


在脚本运行时在其后加上一个或多个参数,用空格隔开,接受这些参数的变量不需要自己创建,依次赋给$1,$2,$3,$4,$5,…


输出所有参数:echo "所有的参数:$* "

输出所有参数:echo "所有的参数:$@ "

输出参数的个数:echo "参数个数:$# "

输出当前的进程id : echo "PID : $$ "

$0 : 返回运行该脚本时输入的命令,可以用命令basename $0 得到脚本的名字,dirname $0 得到脚本的路径

5.变量的赋值方式


1.显式赋值


ip=192.168.1…1 等号两边不能存在空格

time=`date +%F`

time=$(date +%F) ,和上一个效果一样

2.用read从键盘中录入


read 变量名

read -p “提示内容” 变量名

read -p “提示信息” 变量名 变量名 输入两个变量,用空格隔开,可以自定义任意多个

3.注意


" " 是弱引用 ,里面的命令可以执行,’ ’ 是强引用 ,不可执行


6.数的运算


1.整数运算,num1=1.num2=2 , $都可去掉

expr $num1 + $num2 ----------->3 运算符要留空格隔开

echo $(($num1+$num2))------->3

echo $[num1+num2]------------->3

let sum=$num1+$num2 ,容易写成set.

2.小数运算

echo “print 2.0/4” | python

echo “2.2*3” | bc

7.变量内容的删除和替换,url=www.baidu.com


输出变量的长度:echo ${#url}


输出变量:echo ${url}


从前向后匹配删除第一个. : echo ${url#*.} >>baidu.com


从前向后匹配删除第最后一个.(贪婪匹配) : echo ${url##*.} >>com


从后向前匹配直到第一个. : echo ${url%.*} >>www.baidu


从后向前匹配直到最后一个.(贪婪匹配) : echo ${url%%.*} >>www


内容的替换(一个):echo ${ulr/w/W} >>Www.baidu.com


内容的替换(全部):echo ${url//w/W} >>WWW.baidu.com


切片:echo ${url:0:5} >>www.b ,0表示开始位置的索引,5表示截取长度,与python有差异


变量的替代:echo ${变量名:-新的变量值}


变量没有被赋值(包括空值):输出新的变量值


变量被赋值:输出原变量值 (${变量名:-新的变量值},空值也会被替代)


目录
相关文章
|
6月前
|
Shell Linux
|
6月前
|
Shell Python
python 和shell 变量互相传递
python 和shell 变量互相传递
60 0
|
6月前
|
Shell Linux
Linux下的Shell基础——变量、运算符、条件判断(二)
Linux下的Shell基础——变量、运算符、条件判断(二)
115 0
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
1月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
21 0
|
2月前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
44 5
|
2月前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
30 0
|
3月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
202 1
|
4月前
|
分布式计算 大数据 Shell
MaxCompute产品使用合集之odps shell如何将ech变量的结果集合写入文件,并且指定服务器的位置
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
44 10
|
6月前
|
Shell Linux Perl
Linux|如何允许 awk 使用 Shell 变量
Linux|如何允许 awk 使用 Shell 变量
85 2