位置参数变量
位置参数变量的作用:向脚本传递值
位置参数是预定义变量的一类
#!/bin/bash
#num1和num2两个变量赋值位置参数变量$1、$2
num1=$1
num2=$2
#变量sum求和的值是num1加num2
sum=$(($num1+$num2))
#打印输出变量sum的值
echo $sum
#!/usr/bin/env bash arg1=$1 arg2=$2 # ✅ num=$(($arg1 + $arg2)) # ✅ str=$((arg1 + arg2)) echo "num: \$arg1 + \$arg2 = $num" # -e 换行 echo -e "\n" echo "str: arg1 + arg2 = $str" # DEMO # ./str.sh 1 2 # num: $arg1 + $arg2 = 3 # str: arg1 + arg2 = 3
zsh bug
https://stackoverflow.com/questions/18428374/commands-not-found-on-zsh
for loop
for i in $*
do
echo "参数 i" $i
done
#!/usr/bin/env bash
echo ? emoji ^-v-^
# -e 换行
echo -e "\n"
arg1=$1
arg2=$2
arg3=$3
arg4=$4
arg5=$5
arg6=$6
arg7=$7
arg8=$8
arg9=$9
# >= 10, $n => ${n} ✅
arg10=${10}
arg11=${11}
arg12=${12}
# arg10=$10
# arg11=$11
# arg12=$12
echo $arg1
echo $arg2
echo $arg3
echo $arg4
echo $arg5
echo $arg6
echo $arg7
echo $arg8
echo $arg9
echo $arg10
echo $arg11
echo $arg12
# ? ✅, 参数可以为空
all=$((arg1 + arg2 + arg3 + arg4 + arg5 + arg6 + arg7 + arg8 + arg9 + arg10 + arg11 + arg12))
# -e 换行
echo -e "\n"
echo $all
# DEMO
# ./dollar-args.sh 1 2 3 4 5 6 7 8 9 10 11 12
# 55 + 23 = 78
# const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
# arr.reduce((acc, item) => acc += item, 0);
$n, $0, $1~$9, ${10}~${n}
$* , 参数整体
$@, 参数列表
$#,参数个数
位置参数变量
$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如${10},主要用于用户向脚本中传递值,与C语言中main函数的参数类似
$* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$# 这个变量代表命令行中所有参数的个数
运行脚本时所给的参数与C程序运行时参数类似
-----------------------------------------------------------------------------------
#!/bin/bash num1=$1 num2=$2 sum=$(($num1 + $num2)) echo "$num1 + $num2 = "$sum
位置参数变量
#数学运算
sum=$((num1+num2))
位置参数变量
位置参数变量 作用
$n n为数字,$0代表命令本身,$1~$9代表第一个到第九个参数,十以上的参数需要用大括号包含,如${10}
$* 这个变量代表命令行中的所有参数,$*把所有的参数看成一个整体
$@ 这个变量代表命令行中的所有参数,不过$@把每个参数区分别对待。
$# 这个变量代表命令行中的所有参数个数
举例1
vi sum.sh #以下时脚本内容
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1 + $num2)) #变量sum的和是num1+num2 加法+左右有空格 其他亦同
echo$(10 + 20)
echo $sum #打印变量sum的值
调用
hello.shell 10 11
chmod 755 sum.sh #赋予sum.sh权限
./sum.sh 45 67 #参数1为45,参数2为67
举例2
vi canshu2.sh
#!/bin/bash
echo "\$* can shu shi : $*"
echo "\$@can shu ye shi : $@"
echo "\$# can shu ge shu shi : $#"
举例3
vi canshu3.sh
#!/bin/bash
for i in 1 2 3 4
do
echo $i
done
举例4 #$*与$@的区别
vi canshu4.sh
#!/bin/bash
for i in "$*"
#$*中的所有参数看成是一个整体,所以这个for循环只会循环依次
do
echo "The parameters are: $i"
done
for y in "$@"
#$@中的的每个参数看成是独立的,所以"$@"中有几个参数,就会循环几次
do
echo "parameter: $y"
done
chmod 755 canshu4.sh
./canshu4.sh 1 2 3 4 5
linux $*与$@的区别
位置参数变量
位置参数变量
for i in "$*" #$*中所有参数看成是一个整体,for只循环一次
for y in "$@" #$@中每个参数都看成是独立的,"$@"中有几个参数,就会循环几次
位置参数变量
位置参数变量Demo
位置参数变量 =〉用于程序传递参数
脚本
num1=$1
num2=$2
sum=$(($num1 + $num2))//加法 +左右有空格 其他亦同
echo $sum
调用
hello.shell 10 11
循环脚本
for i in "$*"
do
echo $i
done
for y in "$@"
do
echo $y
done
调用
./for.shell
$*和$@的区别
位置参数变量 是为了向脚本中传递值
$n例子:
在一个脚本里
num1=$1
num2=$2
sum=$(($num1+$num2))
echo $sum
然后调用脚本的时候 ./hello.sh 45 67
$n #n为数字,¥0代表命令本身,$1~$9代表第一个到第九个参数,十以上的参数需要用大括号包含,如${10}
$* #代表命令行中的所有参数,$*把所有的参数看成一个整体
$@ #代表命令行中的所有参数,$#把没有参数分别对待。
$# #统计命令行中的所有参数个数
位置参数变量
for i in "$@" 区别
转义符\$*