欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > shell编程-环境变量-字符串-参数传递-运算

shell编程-环境变量-字符串-参数传递-运算

2026/5/1 20:59:50 来源:https://blog.csdn.net/2301_80460108/article/details/144154194  浏览:    关键词:shell编程-环境变量-字符串-参数传递-运算

常见的变量有哪些:

通用环境变量

变量名作用示例值
PATH系统搜索可执行文件的目录路径。/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
HOME当前用户的主目录路径。/home/user
USER当前登录用户名。kali
SHELL当前使用的默认 Shell 程序路径。/bin/bash
PWD当前工作目录的绝对路径。/home/kali/Desktop
OLDPWD上一次工作的目录路径。/home/kali
LANG系统默认的语言和字符编码设置。en_US.UTF-8
LC_ALL强制设置语言环境的值,覆盖其他语言变量(如 LANG 和 LC_*)。en_US.UTF-8
TERM当前终端类型,定义终端支持的功能和特性(如颜色)。xterm-256color
DISPLAY图形用户界面的显示地址,用于 X11 窗口系统。:0
EDITOR默认文本编辑器,用于程序或命令(如 crontab -e)编辑文件。vim 或 nano
HISTFILEShell 历史记录文件路径。/home/kali/.bash_history
HISTSIZE终端历史记录的条目限制。1000
LOGNAME当前登录用户名(通常与 USER 相同)。kali
UID当前用户的用户 ID。1000

2. Shell 特殊变量

脚本与命令行位置参数变量

变量名作用示例值
$0当前脚本或命令的名称。./myscript.sh
$1...$n传递给脚本或命令的参数,$1 是第一个参数,$2 是第二个,依此类推。arg1arg2
$#传递给脚本的参数个数。2
$@传递给脚本的所有参数(独立展开,每个参数独立显示)。arg1 arg2
$*传递给脚本的所有参数(作为单一字符串显示)。arg1 arg2
$?上一个命令的退出状态码(0 表示成功,非 0 表示失败)。0
$$当前脚本的进程 ID(PID)。1234
$_上一个命令的最后一个参数,或者最后执行的结果。/home/kali

Shell 操作变量

变量名作用示例值
IFS内部字段分隔符,影响字符串的分割方式(默认空格、制表符和换行符)。IFS=$'\n'
RANDOM每次调用生成一个介于 0 和 32767 之间的随机数。20417
SECONDS返回 Shell 会话或脚本运行的时间(以秒为单位)。360
LINENO当前脚本中的行号,便于调试和日志记录。45
BASH_VERSION当前使用的 Bash Shell 的版本号。5.1.0(1)-release

3. 脚本与程序开发中的变量

在脚本和程序开发中,有一些常用的变量用于控制程序行为或实现特定功能。

特殊脚本变量

变量名作用示例值
INPUT定义脚本输入的默认文件路径。/home/kali/input.txt
OUTPUT定义脚本输出文件路径。/home/kali/output.log
DEBUG用于调试模式的开关变量。true
CONFIG配置文件路径。/etc/myconfig.conf

4. Kali Linux 特殊变量

Kali Linux 作为一个渗透测试和网络安全工具集,常见工具也会使用一些特定的变量。

变量名作用示例值
TOOL_HOME部分工具的安装目录路径。/usr/share/metasploit-framework 等
MSF_DATABASEMetasploit Framework 的数据库连接配置。postgres://msf:password@localhost:5432/msf
PROXYCHAINS_CONFProxyChains 的配置文件路径。/etc/proxychains.conf
WEB_HOMEWeb 服务的根目录路径,便于存储渗透测试中的 Web 文件。/var/www/html

 

查看环境变量的一些方法:

1.eg、echo

 2.which命令查看

设置临时变量:

意思是当执行一个程序时,会优先去root目录下查找,然后再按照PATH指定的目录顺序查找

如何将环境变量设置为永久变量:

将文件放入环境变量里,没有加入时

加入之后

计算字符长度:

注:这里有#和没#是有区别的

查看字符串的位数:

 

向脚本程序传递参数如何实现:

eg、

echo 执行的文件名是:$0
echo 第一个参数是:$1
echo 传递的参数作为一个字符串显示:$*
echo 传递的参数独立作为每个字符串显示:$@
echo 传递到脚本的参数个数是:$#
echo 最后推出的命令状态:$?
echo 脚本运行的当前进程ID是:$$

执行之后:

解释:

 1.echo 执行的文件名是:$0

  • $0 表示当前脚本的文件名,包含路径(如果有)。
  • 当脚本被执行时,这个变量会自动记录脚本的文件名。
  • 示例:假如脚本文件名为 script.sh,则输出:
    执行的文件名是:script.sh

2. echo 第一个参数是:$1

  • $1 表示传递给脚本的第一个参数。
  • 在执行脚本时,用户可以通过命令行传递参数,例如:./script.sh arg1 arg2,其中 arg1 是第一个参数。
  • 示例:假如运行命令 ./script.sh hello,则输出:
    第一个参数是:hello

3. echo 传递的参数作为一个字符串显示:$*

  • $* 表示所有传递给脚本的参数,作为一个单独的字符串显示(以空格分隔)。
  • 示例:假如运行命令 ./script.sh arg1 arg2,则输出:
    传递的参数作为一个字符串显示:arg1 arg2

4. echo 传递的参数独立作为每个字符串显示:$@

  • $@ 表示所有传递给脚本的参数,与 $* 类似,但显示方式不同。
    • 当被引号 "" 包裹时:
      • "$*" 将所有参数当作一个整体,输出为一个字符串。
      • "$@" 将每个参数独立显示,保持参数原样。
  • 示例:假如运行命令 ./script.sh arg1 arg2
    • "$*" 的输出
      arg1 arg2
    • "$@" 的输出(独立参数)
      arg1 arg2

5. echo 传递到脚本的参数个数是:$#

  • $# 表示传递给脚本的参数数量。
  • 示例:假如运行命令 ./script.sh arg1 arg2,则输出:
    传递到脚本的参数个数是:2

6. echo 最后退出的命令状态:$?

  • $? 表示上一个命令的退出状态码:
    • 通常为 0 表示成功。
    • 非 0 表示失败,数值可用于判断错误类型。
  • 示例:假如上一条命令执行成功,则输出:
    最后退出的命令状态:0

7. echo 脚本运行的当前进程ID是:$$

  • $$ 表示当前脚本的进程 ID(Process ID)。
  • 这是系统分配给当前脚本运行的唯一标识。
  • 示例:假如当前脚本进程 ID 为 12345,则输出:
    脚本运行的当前进程ID是:12345

可以指定参数值传参

如何在shell编程中进行数学运算?

expr使用

 

乘法运算需要用转义字符:

使用括号也需要进行转义(注意空格):

除法运算:

取余运算:

变量与运算的结合使用:

反引号的使用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词