【shell第一天】shell常用内部命令、自定义环境变量、预定义变量、vimrc、脚本执行方式

shell常用内部命令

内部命令功能
echo可在屏幕上输出信息
eval当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行
exec命令能够在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程就终止了
export设置或者显示环境变量
read命令可从标准输入读取字符串等信息,传给shell程序内部定义的变量
shift在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,并使位置参数$#减1,直到减到0为止
exit退出shell程序。在exit之后可以有选择地指定一个数作为返回状态

echo

  • 输出任意字符串
echo "Hello World!"

执行结果:
Hello World!
  • 输出变量
var_a=123
var_b=456
echo $var_a
echo "$var_a" '$var_b'
echo $var_a+$var_b

执行结果:
123
123 $var_b
123+456
  • -n选项:不换行输出内容
echo 123
echo -n 123

执行结果:
123			<-有换行
123[mmrrj@localhost ~]$			<-无换行
  • -e选项:解析转义字符
echo "123\n456"
echo -e "123\n456"

执行结果:
123\n456
123
456

eval

  • 命令格式:eval args
    功能:当shell程序执行到eval语句时,shell读入参数args,并将它们组合成一个新的命令,然后执行。
var_a="current path is;"
var_b="pwd"
eval echo $var_a $var_b

#所有参数视为字符串连接起来作为命令执行
#等同于执行echo current path is;pwd
执行结果:
current path is
/home/mmrrj

exec

  • 在不创建新的子进程的前提下,转去执行指定的命令,当指定的命令执行完毕后,该进程就终止了
#!/bin/bash
echo 123
exec echo 456
echo 789

执行结果:
123
456

export

  • 设置环境变量
#!/bin/bash
export test=hahahaha
echo $test

执行结果:
hahahaha

read

  • 可从标准输入读取字符串等信息,传给shell程序内部定义的变量
#!/bin/bash
read var_str
echo "input string is $var_str"

执行结果:
hahahaha	#输入的字符串
input string is hahahaha
  • -p prompt:设置提示信息
#!/bin/bash
read -p "please input your name:" var_str
echo "$var_str,welcom"

执行结果:
please input your name:mmrrj	#提示信息无换行
mmrrj,welcom
  • -t timeout:设置输入等待时间,单位默认为秒
  • 从标准输入读取一行并将其分为不同的域,如同词语分割一样,并且第一个词被赋值给第一个 NAME 变量,第二个词被赋值给第二个 NAME 变量,如此继续,直到剩下所有的词被赋值给最后一个 NAME变量。只有 $IFS 变量中的字符被认作是词语分隔符。
    默认分隔符为空格,若非最后一个变量内需要空格,可以更改适合的分隔符。
#!/bin/bash
IFS=/
read name1 name2
echo $name1
echo $name2

执行结果:
Zhang San/Li Si
Zhang San
Li Si

shift

  • 在程序中每使用一次shift语句,都会使所有的位置参数依次向左移动一个位置,并使位置参数$#减1,直到减到0为止
#!/bin/bash
echo "This is the first parameter: $1"
echo "This is the second parameter: $2"
shift
echo "after shift"
echo "This is the first parameter: $1"

执行结果:
123 456
123
456
after shift
456

exit

  • 退出shell程序。在exit之后可以有选择地指定一个数作为返回状态
#!/bin/bash
exit 222

执行结果:
echo $?
222

自定义环境变量

  • 使用export定义自定义环境变量
    export [-fn] [名称[=值] …]
export test="test"
echo $test

执行结果:
test
  • 使用declare定义自定义环境变量
    declare [-aAfFgiIlnrtux] [-p] [name[=value] …]
declare -x test=test
echo $test

执行结果:
test
  • 针对单一用户的变量
    在该用户家目录下的~/.bash_profile或~/.bashrc中添加环境变量
#在root家目录的.bashrc末尾添加
export root_data=root

#source生效后,以root身份执行
echo $root_data
root
#以其他用户执行,无输出
echo $root_data
  • 针对所有用户的变量
    在/etc/bashrc、/etc/profile文件或者/etc/profile.d目录中定义
#在/etc/bash末尾添加
export all_data=all

#source生效后,以任意用户执行均能得到一样的返回
echo $all_data
all
  • 使用env查看所有的环境变量
env
  • 查看所有变量
set -o posix ; set

declare -p

预定义变量

变量说明
$#命令行参数的个数
$*以"参数1 参数2 参数3…"的形式返回所有参数的值
$@以“参数1”“参数2”“参数3”…的形式返回所有的值
$n表示传递给脚本的第n个参数,例如$1表示第一个参数,$2表示第二个参数,$3表示第三个参数
$?前一个命令或者函数的返回状态码。$?的返回值用法:(1)判断命令、脚本或函数等程序是否执行成功(2)若在脚本中调用执行“exit 数字”,则会返回这个数字给“$?”变量(3)如果是在函数里,则通过“return 数字”把这个数字以函数值的形式传给“$?”

vimrc

  • 全局配置:/etc/vimrc
  • 用户配置: ~/.vimrc
  • 默认tab是8格,可修改在sh中为4格
autocmd FileType sh set ts=4

脚本执行方式

  • bash ./filename.sh(产生子进程,再运行,使用当前指定的bash shell去运行)
  • ./filename.sh(产生子进程,再运行,使用脚本里面指定的shell去运行。使用该种方式执行需要x权限)
  • source ./filename.sh(source命令是一个shell内部命令,其功能是读取指定的shell程序文件,并且依次执行其中的所有的语句,并没有创建新的子shell进程,所以脚本里面所有创建的变量都会保存到当前的shell里面)
  • . filename.sh(和source一样,也是使用当前进程执行)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值