Fullstar

Archives

  • December 2025
  • August 2024
  • July 2024
  • February 2024
  • November 2023
  • August 2023
  • July 2023
  • January 2023
  • November 2022
  • October 2022
  • September 2022
  • February 2022
  • January 2022
  • September 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020

Categories

  • Code
  • Lens
  • Life
0
Fullstar
  • Code

Linux运行程序与shell编程

  • December 8, 2020
  • Brandon

Looking for a Shorter Overview?

AI Summary

先用g++编译C++程序,并通过标准输出和错误输出重定向管理命令结果。Shell部分说明脚本执行方式、变量与参数传递、test条件判断、算术运算,以及for、while、until循环的写法。

Key Moments

AI-generated
1

使用g++编译C++程序

使用g++直接编译会生成默认的a.out,也可通过-o指定可执行文件名。
2

通过重定向管理输出

使用>或1>重定向标准输出,使用2>将标准错误输出写入指定文件。
3

掌握Shell脚本执行与变量

可用sh 脚本名启动新Shell执行脚本,并通过read、自定义变量、位置变量和命令替换处理输入与参数。
4

使用条件与循环控制流程

通过if、test、for、while和until结构,根据条件判断、比较和循环任务控制脚本执行。
Total
0
Shares
0
0
0

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

AI-generated

Linux shell常用指令

从变量与命令替换,到管道、后台进程、grep、sort 和 tar,这份速查整理了 Linux Shell 日常操作最常用的语法、选项与命令示例。
76.6% match December 6, 2020

linux文件系统

从 /bin、/etc、/var 到 /proc,快速厘清 Linux 目录各自用途;再掌握重定向、cp、mv、ln、wc 和通配符等日常文件操作。
60.6% match November 27, 2020

Questions Answered

AI-generated

如何用g++编译C++程序并指定输出文件?

使用g++源文件,或通过-o参数指定可执行文件名称。

Shell脚本有哪些执行方式,何时需要修改权限?

可用sh或./执行,直接运行时通常需要可执行权限。

Shell脚本如何读取变量和命令行参数?

read读取输入,位置变量和$*获取传入参数。

如何在Shell中进行条件判断和循环?

test配合if判断,for、while和until实现重复执行。

Next Up

Shell 实用指令
掌握目录与命令
开发工具速查
vi快捷操作
Total
0
Shares
Share 0
Tweet 0
Pin it 0
Brandon

Previous Article
  • Code

Linux shell常用指令

  • December 6, 2020
  • Brandon
View Post
Next Article
  • Code

cmake应用

  • January 18, 2021
  • Brandon
View Post
You May Also Like
View Post
  • Code

Letta部署记录

  • Brandon
  • December 26, 2025
View Post
  • Code

WordPress 后台任务利器:使用 BGRunner 构建可靠的异步处理

  • Brandon
  • December 14, 2025
View Post
  • Code

WordPress image offload

  • Brandon
  • December 14, 2025
View Post
  • Code

ComfyUI应用手册

  • Brandon
  • December 6, 2025
View Post
  • Code

Leetcode Java常用代码

  • Brandon
  • February 17, 2024
View Post
  • Code

Golang入门

  • Brandon
  • February 4, 2024
View Post
  • Code

Setting Up and Maintaining a Ubuntu Environment for My Home Server

  • Brandon
  • November 24, 2023
View Post
  • Code

Swift Learning Log

  • Brandon
  • August 31, 2023

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Fullstar

Input your search keywords and press Enter.

Linux shell常用指令

linux文件系统

常用工具指令

vi编译器查询手册

嵌入式程序设计基础(ARM9)

链接原理浅析(基于Unix ELF文件格式)

UP NEXT

Linux shell常用指令

76.6% match December 6, 2020 0