# !告诉系统同一行上紧跟在他后面的那个参数是用来执行本文件的程序
chmod +x first
./first 把脚本的完整路径告诉shell 在shell的环境变量中没有当前目录
chmod u=rwx,go=rx /usr/bin/first
【|| &&】
&& 每个后续命令只在前面的命令都执行成功的前提下才会被执行
|| 每个后续命令只在前面的命令都执行失败的前提下才会被执行
【变量】
#! /bin/sh
myvar="hi there"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo "Enter some text"
read myvar
echo '$myvar' now equals $myvar
exit 0
如果字符串中有空格,必须用引号把他们括起来,等号两边不能有空格
$0 shell 脚本的名字
$1,$2,... 脚本的参数
$* 在一个变量中列出所有参数 用IFS分隔
$@ 不使用IFS分隔
【参数】
#!/bin/sh
salutation="hello"
echo $salutation
echo "the program $0 is now running"
echo "the second parameter was $2"
echo "the first parameter was $1"
echo "the parameter list wa $*"
echo "the user's home directory is $HOME"
echo "Please input a new greeting"
read salutation
echo $salutation
echo "the script is now complete"
exit 0
【if】
#!/bin/bash
if [ -f /bin/bash ]
then
echo "file /bin/bash exists"
fi
if [ -d /bin/bash ]
then
echo "/bin/bash is a directory"
else
echo "/bin/bash is NOT a directory"
fi
【IF】
#!/bin/sh
echo "Is it morning? Please answer yes or no"
read timeofday
#=号前要有空格
if [ $timeofday = "yes" ]
then
echo "Good morning"
else
echo "Godd afternoon"
fi
exit 0
【FOR】
#!/bin/sh
for foo in one two three four
do
echo $foo
done
for file in $(ls t*.sh); do
echo $file
done
exit 0
【WHILE】
#!/bin/sh
echo "Enter password"
read trythis
while [ "$trythis" != "secret" ]; do
echo "Sorry try again"
read trythis
done
foo=1
while [ "$foo" -le 20 ]
do
echo "Here we go"
foo=$(($foo+1))
done
exit 0
【WHILE】
#!/bin/sh
echo "Enter password"
read trythis
while [ "$trythis" != "secret" ]; do
echo "Sorry try again"
read trythis
done
foo=1
while [ "$foo" -le 20 ]
do
echo "Here we go"
foo=$(($foo+1))
done
exit 0
【CASE】
#!/bin/sh
echo "Is it morning? Please answer yes or no"
read timeofday
case "$timeofday" in
yes | y | Yes | YES) echo "Good Morning";;
n* | N* ) echo "Good Afternoon";;
*) echo "Sorry, answer not recognized";;
esac
exit 0
case "$timeofday" in
yes) echo "Good morning";;
no) echo "Good Afternoon";;
y) echo "Good Morning";;
n) echo "Good Afternoon";;
*) echo "Sorry,answer not recognized";;
esac
exit 0
【shell Syntax error: Bad for loop variable】
for((i=1;i<=50;i++))
在终端执行 sudo dpkg-reconfigure dash
选择 no