shell基础命令

1.命令使用:echo、eval、exec、export、read、shift、exit(要求退出码为222)
  这些命令的功能,以及用例

[root@localhost ~]# eval_data='hello;head -2 /etc/group'
[root@localhost ~]# echo $eval_data
hello;head -2 /etc/group
[root@localhost ~]# eval echo $eval_data
hello
root:x:0:
bin:x:1:
[root@localhost ~]# ll
total 8
-rw-------. 1 root root 1207 Jul 15 23:02 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Desktop
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Documents
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Downloads
-rw-r--r--. 1 root root 1479 Jul 15 23:06 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Music
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Pictures
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Public
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Templates
drwxr-xr-x. 2 root root    6 Jul 15 23:07 Videos
[root@localhost ~]# exec cd Music/

Connection closed.

Disconnected from remote host(192.168.80.128:22) at 20:10:37.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 
[root@localhost ~]# database=1
[root@localhost ~]# esport database
bash: esport: command not found...
[root@localhost ~]# export database
[root@localhost ~]# echo $database
1
[root@localhost ~]# env | grep database
database=1
[root@localhost ~]# database=da sha diao;export database
bash: sha: command not found...
[root@localhost ~]# database=da sha diao ;export database
bash: sha: command not found...
[root@localhost ~]# database="da sha diao" ;export database
[root@localhost ~]# env | grep database
database=da sha diao
[root@localhost ~]# 
[root@localhost ~]# read -p "input:" -t 5 base
input:[root@localhos
[root@localhost ~]# read -p "input:" -t 5 base
input:zhangsan[root@localhost ~]# zhangsan
bash: zhangsan: command not found...
[root@localhost ~]# read -p "input:" -t 5 base
input:zhangsan
[root@localhost ~]# echo $base
zhangsan
[root@localhost ~]# 

2..使用read从标准输入读取两个变量: name1和name2, 要求name1包含空格

方法一:利用数组
[root@servera bash]# echo -a "Please input name1 and name2:";read -a name1;read -a name2
-a Please input name1 and name2:
shi yong chuan
example
[root@servera bash]# echo "${name1[0]} ${name1[1]} ${name1[2]}"
shi yong chuan
[root@servera bash]# echo "${name2[0]}"
example
​
方法二:指定分隔符
[root@servera bash]# echo -a "Please input name1 and name2:";IFS=";";read  name1 name2
-a Please input name1 and name2:
shi yong chuan;example
[root@servera bash]# echo $name1
shi yong chuan
[root@servera bash]# echo $name2
example


3.定义自定义环境变量:(使用export和declare)
         针对root用户的所有连接:root_data=root
         针对所有用户的变量: all_data=all
        查看所有的环境变量, 查看所有变量

#针对root用户的所有连接:root_data=root
[root@servera bash]# vim /etc/profile
ROOT_DATA="ROOT"
export ROOT_DATA
​
#针对所有用户的变量: all_data=all
[root@servera bash]# vim ~/.bash_profile
ALL_DATA=="ALL"
export ALL_DATA
#重新加载环境变量
[root@servera bash]# source ~/.bash_profile 
[root@servera bash]# source /etc/profile
​
查看所有的环境变量, 查看所有变量
[root@servera bash]# set | grep ROOT_DATA
ROOT_DATA=ROOT
[root@servera bash]# set | grep ALL_DATA
ALL_DATA==ALL

————————————————
版权声明:本文为CSDN博主「Small stones」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44508518/article/details/126351960


4.脚本执行的方式及特点:用样例验证

方式一:bash 产生子进程,再运行,使用当前指定的bash shell去运行
示例:
[root@servera bash]# bash year.sh
请输入年份:2008
2008 是闰年
​
方式二:./year.sh(产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式执行需要x
权限)
[root@servera bash]# chmod 755 year.sh
[root@servera bash]# ./year.sh 
请输入年份:2022
2022 不是闰年
​
方式三:source ./filename.sh(source命令是一个shell内部命令,其功能是读取指定的shell程序文件,并且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创建的变量都会保存到当前的shell里面)
[root@servera bash]# name="lisi"
[root@servera bash]# echo $name
lisi
编写脚本
[root@servera bash]# vim source_test.sh
name="zhangsan"
执行脚本
[root@servera bash]# source source_test.sh 
[root@servera bash]# echo $name
zhangsan
​
Tips:发现name的值已经发生了变化
​
方法四:. filename.sh(和source一样,也是使用当前进程执行)
[root@servera bash]# . source_test.sh 
[root@servera bash]# . year.sh 
请输入年份:2000
2000 是闰年
————————————————
版权声明:本文为CSDN博主「Small stones」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44508518/article/details/126351960

5.$#,$*,$@,$n,$?的使用

[root@servera bash]# vim p_test.sh
echo "------------------"
echo $#
echo "------------------"
echo $2
echo "------------------"
echo $?
[root@servera bash]# bash p_test.sh 1 2 3 4 5
------------------
5                   # 参数总数          
------------------
2                   # 第2个位置参数对应的值
------------------
0                   # 执行状态码,0表示执行成功

其中$*和$@需要特别注意:
$*:以"参数1 参数2 参数3…"的形式返回所有参数的值
$@:以"参数1""参数2""参数3"…的形式返回所有的值
示例
[root@servera bash]# vim return_all_vars_test.sh
for i in "name1 name2 name3 name4"
do
  echo $i
done

for i in "name1" "name2" "name3" "name4"
do
  echo $i
done
[root@servera bash]# bash return_all_vars_test.sh 
name1 name2 name3 name4
name1
name2
name3
name4
————————————————
版权声明:本文为CSDN博主「Small stones」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44508518/article/details/126351960

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值