shell笔记

#!C:\Git\bin\bash
#a='123';
#echo "the var is ${a}";

a='123'
#设定只读
#readonly a

#a=456
#echo $a

#unset a 删除变量

#打印字符串长度
#echo ${#a};
#echo $PATH 访问环境变量

#提取子字符串
#a='aaaa'
#echo ${a:1:2}

#string="alibaba is a great company"
#echo `expr index "$string" aaa`

# arr1=(
# 1
# 2
# 3
# 4
# )
#echo ${arr1[1]}

#打印数组长度
#echo ${#arr1[@]}

#打印单个元素的长度
#echo ${#arr1[1]}

#获取运行脚本传递的参数
#echo $1
#echo $2
#echo $3

#传递参数个数
#echo $#;

#以一个单字符串显示所有向脚本传递的参数
#echo $*;

#脚本运行的当前进程ID号
#echo $$;

#后台运行的最后一个进程的ID号
#echo $!;

#显示Shell使用的当前选项,与set命令功能相同。
#echo $-;

#显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
#echo $?;

arr1=(
'a'
'b'
'c'
'd'
)

#获取数组中的所有元素
#echo "${arr1[*]}"
#echo "${arr1[@]}"

#获取数组的长度
#echo "${#arr1[*]}"
#echo "${#arr1[@]}"

#原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
#expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 这里计算表达式用反引号 英文Esc(下面的键位)


# a=10
# b=20

# #判断数字
# val=`expr $a + $b`
# echo "a + b : $val"

# val=`expr $a - $b`
# echo "a - b : $val"

# val=`expr $a \* $b`
# echo "a * b : $val"

# val=`expr $b / $a`
# echo "b / a : $val"

# val=`expr $b % $a`
# echo "b % a : $val"

# if [ $a == $b ]
# then
# echo "a 等于 b"
# fi
# if [ $a != $b ]
# then
# echo "a 不等于 b"
# fi

#判断字符串
# if [ $a -eq $b ]
# then
# echo "$a -eq $b : a 等于 b"
# else
# echo "$a -eq $b: a 不等于 b"
# fi
# if [ $a -ne $b ]
# then
# echo "$a -ne $b: a 不等于 b"
# else
# echo "$a -ne $b : a 等于 b"
# fi
# if [ $a -gt $b ]
# then
# echo "$a -gt $b: a 大于 b"
# else
# echo "$a -gt $b: a 不大于 b"
# fi
# if [ $a -lt $b ]
# then
# echo "$a -lt $b: a 小于 b"
# else
# echo "$a -lt $b: a 不小于 b"
# fi
# if [ $a -ge $b ]
# then
# echo "$a -ge $b: a 大于或等于 b"
# else
# echo "$a -ge $b: a 小于 b"
# fi
# if [ $a -le $b ]
# then
# echo "$a -le $b: a 小于或等于 b"
# else
# echo "$a -le $b: a 大于 b"
# fi

#布尔运算符 !非运算 -o或运算 -a与运算

# aa=10
# bb=20
# cc=30

# if [ $aa < $bb -a $bb < $cc ]
# then
# echo "true";
# else
# echo 'false';
# fi

#获取标准输入行信息
#read name
#read aaa
# echo "$name It is a $aaa"

#for循环
#for loop in 1 2 3 4 5
#do
# echo "The value is: $loop"
#done

#while循环
# int=1
# while(( $int<=5 ))
# do
# echo $int
# let int++;
# done

# arr=(
# 1
# 2
# 3
# 4
# 5
# );

# for ((i=1;i<=5;i++))
# do
# echo ${arr[$i]}
# done


#while (true)
#do
# echo 1;
#done

# int=1;
# until ($int -q 19)
# do
# echo $int;
# let int++;
# done

# while :
# do
# php demo1.php
# sleep 5
# done

#case的语法和C family语言差别很大,它需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break。
# read num
# case $num in
# 1) echo 1
# ;;
# 2) echo 2
# ;;
# 3) echo 3
# ;;
# 4) echo 4
# ;;
# 5) echo 5
# ;;
# *) echo '数字不在范围内'
# ;;
# esac
# aaa() {
# echo 123;
# }
# aaa

#在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...


# funWithParam(){
# echo "第一个参数为 $1 !"
# echo "第二个参数为 $2 !"
# echo "第十个参数为 $10 !"
# echo "第十个参数为 ${10} !"
# echo "第十一个参数为 ${11} !"
# echo "参数总数有 $# 个!"
# echo "作为一个字符串输出所有参数 $* !"
# }
# funWithParam 1 2 3 4 5 6 7 8 9 34 73

# #注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。另外,还有几个特殊字符用来处理参数:
ps aux | grep ps

转载于:https://www.cnblogs.com/tudou1223/p/5257627.html

### 超哥 Shell 编程笔记与教程 超哥的 Shell 编程笔记主要聚焦于基础概念、特殊变量以及子串操作等内容[^1]。以下是一些关键点: #### 一、Shell 编程基础 在 Shell 编程中,特殊变量是理解脚本逻辑的核心部分之一。例如 `$0` 表示脚本名称,`$1` 到 `$n` 表示传递给脚本的参数,而 `$$` 则表示当前进程的 PID[^3]。 #### 二、子壳(Subshell)行为 子壳的行为需要注意,其内部定义的变量无法被父壳访问。此外,当退出子壳时,会按照嵌套层次逐步退出,类似于嵌套的 `for` 循环结构中的 `break` 操作[^2]。 #### 三、循环控制语句 以一个简单的 `for` 循环为例,可以使用 `continue` 或 `break` 来控制循环流程。例如,在下面的代码中,当变量 `i` 等于 4 时,跳过当前循环并继续执行下一次循环: ```bash #!/bin/bash # 演示 continue 的用法 for (( i=1; i<=10; i=i+1 )) # 循环十次 do if [ "$i" -eq 4 ]; then # 如果变量 i 的值等于 4 continue # 跳过本次循环 fi echo $i # 输出变量 i 的值 done ``` 上述代码展示了如何通过条件判断来改变循环的行为[^3]。 #### 四、文件遍历 在实际应用中,Shell 脚本常用于文件或目录的遍历操作。以下是一个遍历指定路径下的文件并输出其路径的示例: ```bash #!/bin/bash # 遍历 /home/user 开头的路径 for file in /home/user* do if [ -f "$file" ]; then # 判断是否为文件 echo "File: $file" elif [ -d "$file" ]; then # 判断是否为目录 echo "Directory: $file" fi done ``` 这段代码结合了 `-f` 和 `-d` 测试选项,分别检查变量 `$file` 是否为文件或目录[^4]。 #### 五、系统命令集成 如果需要将脚本作为系统命令运行,可以将其放置在系统的可执行路径中(如 `/bin` 或 `/sbin` 目录)。这样可以通过简单的命令名直接调用脚本[^2]。 ### 总结 超哥的 Shell 编程笔记提供了从基础到实践的全面指导,包括特殊变量、子壳行为、循环控制以及文件遍历等内容。这些知识点对于初学者和进阶用户都具有很高的参考价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值