一.Linux运行C++程序
- g++
编译c++程序
(1)g++ name.cpp
将生成默认可执行文件a.out
(2)g++ -o 文件名 name.cpp:指定输出文件名
例:g++ -o first first.cpp
标准输出重定向
(1) > :对标准输出重定向
(2) 1> :1为文件描述符,默认分配给标准输出设备
例:ls -C 1 > list
(3) 2> :重定向标准错误输出
例:cat Y>Z 2> error
若不存在Y文件则将输出错误信息至error文件
二.Shell编程
shell脚本包含一系列shell命令,运行shell脚本,命令依次交给shell执行,一次一条,当所有命令执行完毕或出错则脚本停止执行1.执行脚本
1.执行脚本
(1)sh(任何一个shell) 脚本名
方法实质:启动一个新shell运行脚本程序
更改文件权限:chmod
格式:chmod 字符串 文件名
字符串:u/g/o/a +-= rwx-【对象,操作符,权限】
例:chmod o-w myfile
(2)./脚本名
方法实质:在当前shell中执行脚本,而不创建子进程
(3)可执行文件
2.shell脚本变量
(1)读取输入:read
从标准输入设备读入字符串存入变量中
例:read A B C
输入后用\$变量名的方式访问
(2)自定义变量:变量名=变量值
例:
count=1
header=”header”
(3)清除变量:unset
例:unset var1
(4)变量与命令替换
例:DATE=`date`
(5)传递命令行参数
例:myshell abc 123 b2b
参数传递给程序,按顺序命名为\$0,\$1…\$9
位置变量:

若参数多于9个则第9个后被忽略,但可通过\$*获得
可通过set指令给位置变量赋值,set参数依次赋值给位置变量
(6)变量应用实例

3.exit
shell内部命令,立即终止程序运行
格式:exit n
n为退出状态,也称返回码,若未提供返回码则使用shell执行最后一条命令的退出值,返回给父进程一个退出状态
4.条件控制结构
(1)if-then结构
if [ condition ] #条件前后必须加空格
then
commands
...
last-command
fi
#实例:
DIR=$Home/keep
if [ $# = 1 ]
then
cp $1 $DIR
fi
vi $1
exit 0
(2)if-then-else结构
if [ condition ]
then
commands
...
last-command
else
false-command
...
last-false-command
fi
(3)if-then-elif结构
if [ condition_1 ]
then
commands_1
elif [ condition_2 ]
then
commands_2
elif [ condition_3 ]
then
command_3
else
commands_n
fi
5.test
计算作为其参数的表达式的真假,真:0,假:非0值
例(判断是否输入Y):
read answer
if test "$answer" = Y
then
echo "Glad to hear that!"
else
echo "Go home!"
fi
echo
exit 0
(1)格式:
1.if test “\$variable” = value
2.if [ “\$variable” = value ]
(2)组合比较表达式
1.test 表达式1 逻辑运算符 表达式2
2.[ 表达式1 逻辑运算符 表达式2 ]
逻辑运算符:
与:-a 或:-o 非:!
(3)数值比较

例:if test “\$num1” -gt “\$num2” -a “\$num1” -gt “\$num3”
(4)字符串比较

例:
test -z “\$STRING”
echo \$?
#输出0为真,1为假
(5)文件检测

(6)算术运算:expr与let
expr:
#符号左右要有空格且参数只能为整数
expr 1 + 2
expt 10 / 2
expr 10 \* 2
expr 10 \% 3
expr Gabe = Gabe
expr 10 \< 20
expr 10 \> 20
expr 6 \> A
x=10
x=`expr $x + 1`
echo $x
let:
#符号左右无空格,变量直接使用
x=100
let x=x+1
let y=x*2
echo $y
(7)循环结构
1.for-in-done
for variable
in list-of-value
do
commands
done
#例
for count in 1 2 3
do
echo "$count"
done
exit 0
2.while-do-done
while [ condition ]
do
commands
done
#例1
carryon=Y
while [ $carryone = Y ]
do
echo "ok"
read carryone
done
#例2
count=1
while [ $count -lt 10 ]
do
echo $count
let count=count+1
#(( count=count+1 )) :缩写let命令
done
3.until-do-done【循环条件为假(非0)就继续循环】
until [ condition ]
do
commands
done
#例,查看指定用户是否登录到系统,若没有则在登录时进行报告
until who|grep "$1">/dev/null
do
sleep 30
done
Comment