shell编程-基础知识

在这里插入图片描述

shell是一个命令行解释器,接受应用程序用户命令,调用操作系统内核
echo $SHELL
执行shell脚本
#不赋予脚本权限
bash hello.sh
sh hello.sh

#必须具有可执行权限
./hello.sh
shell中的变量
系统变量
H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER
自定义变量
1、变量=值(=两侧不可有空格)
vim xhq.sh

B=3
echo $B
unset $B

readlonly A=2
unset $A
export
将变量导出为环境变量,使得当前shell绘画创建的变量可被子进程继承。
在Shell脚本编程中,export命令用于将变量导出为环境变量,
使得在当前shell会话中创建的变量可以被子进程继承。
如果你想要让一个变量在多个shell脚本文件之间共享,
可以按照以下步骤操作:

  1. 定义变量:首先,在你的主脚本文件中定义一个变量。

    #!/bin/bash
    MY_VAR="Hello, World!"
    
  2. 导出变量:使用export命令将该变量导出为环境变量。

    export MY_VAR
    
  3. 保存并运行主脚本:保存主脚本文件,并在shell中运行它。这将设置环境变量MY_VAR

    chmod +x your_script.sh
    ./your_script.sh
    
  4. 在其他脚本中使用变量:在其他shell脚本文件中,你可以直接使用这个环境变量,而无需再次导出。

    #!/bin/bash
    echo "The value of MY_VAR is $MY_VAR"
    
  5. 确保环境变量的继承:为了确保环境变量在子脚本中可用,你需要从主脚本中调用子脚本,或者在子脚本中显式地从主脚本中导入环境变量。

    • 从主脚本调用:在主脚本中直接调用子脚本。

      # 在主脚本中
      ./another_script.sh
      
    • 在子脚本中导入:如果子脚本需要独立运行,可以在子脚本中添加一行来从主脚本的环境导出变量。

      #!/bin/bash
      # 假设主脚本的环境变量存储在文件中
      source /path/to/environment_variables.sh
      echo "The value of MY_VAR is $MY_VAR"
      

请注意,环境变量只在导出它们的shell会话及其子进程中有效。
如果你希望变量在所有未来的shell会话中都可用,
你可能需要将export命令添加到用户的.bashrc.profile文件中。

另外,如果你希望变量在系统范围内持久化,
可以考虑使用系统级的配置文件,
/etc/profile/etc/environment
但这通常需要管理员权限。
特殊变量
$n:(功能描述:n为数字,0 代表该脚本名称,1−9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 ${10})
echo “$0 $1 $2”
KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲ :获取参数个数 echo "…# 个"
∗ 功能描述:这个变量代表命令行中所有的参数, * 功能描述:这个变量代表命令行中所有的参数, 功能描述:这个变量代表命令行中所有的参数,*把所有的参数看成一个整体)
$@ (功能描述:这个变量也代表命令行中所有的参数,不过 $@把每个参数区分对待)
∗ 、 *、 @
$?
(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
判断xhq.sh脚本是否正确执行

bash xhq.sh

echo $?
四、运算符

B=$[(1+2)*4]
echo $B
条件判断
1、[ condition ](注意condition前后要有空格)
2、条件非空即为true,[ lisi ]返回true,[] 返回false。
[ 2 -gt 1 ]
在这里插入图片描述

比较数字大小
[ 2 -gt 1 ]
echo $?

2、判断文件权限
[ -w xhq.sh ]
echo $?

3、判断文件类型
[ -f xhq.sh ]
echo $?
五、流程控制

#!/bin/bash
if [ $1 -eq “1” ]
then
echo “the number is 1”
elif [ $1 -eq “2” ]
then
echo “the number is 2”
fi

#!/bin/bash
case $1 in
“1”)
echo “the number is 1”
;;
“2”)
echo “the number is 2”
;;
*)
echo “other number”
;;
esac

While

#!/bin/bash
sum=0
i=0
while [ i − l e 10 ] d o s u m = i -le 10 ] do sum= ile10]dosum=[ i + i+ i+sum]
i= [ [ [i+1]
done

echo $sum

For
#打印所有参数
for i in ∗ d o e c h o " * do echo " doecho"i,"
done

#1-100之和
sum=0
for ((i=0;i<=100;i++))
do
sum= [ [ [sum+$i]
done
echo $sum
六、读取控制台输入内容
-t:等待时间
-p提示符

read -t 5 -p “your input is” NAME
echo $NAME
七、函数
basename显示文件名
dirname显示文件路径(不包含文件名)
basename /data/xhq/xhq.sh

dirname /data/xhq/xhq/sh
自定义函数
1、必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一样先编译。
2、函数返回值,只能通过 $?系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255)
[ function ] funname[()]
{
Action;
[return int;]
}
funname
计算参数之和
UDA_VISIBLE_DEVICES=4 python main.py

  • 18
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值