Linux运行程序与shell编程

一.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

Related post

  1. 汇编基础:常用指令(X86)

    2020-08-28

  2. JDBC操作Hive概述

    2021-09-24

  3. 设计模式-工厂模式

    2020-09-09

  4. 基于RNN的自动文本生成

    2020-07-22

There are no comment yet.

COMMENT

Take a Coffee Break

Recommend post

  1. 常用工具指令

    2022-09-18

Category list

ABOUT

Welcome to FullStar, a captivating online destination where the realms of software development and personal reflections intertwine.

April 2025
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Life Logs

  1. 回首

    2023-07-14

Return Top