Ⅰ 如何利用shell脚本中的eval命令来构造"智能"命令
今天主要介绍一个shell脚本中比较少见的命令--eval
功能说明 :重新运算求出参数的内容。
语 法 :eval [参数]
补充说明 :eval可读取一连串的参数,然后再依参数本身的特性来执行。
参 数 :参数不限数目,彼此之间用分号分开。
eval命令将会首先扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。eval也可以用于回显简单变量,不一定是复杂变量。
eval的作用是再次执行命令行处理,也就是说,对一个命令行,执行两次命令行处理。这个命令要用好,就要费一定的功夫。下面用几个例子帮助大家理解下。
1、eval一个命令
eval echo相当于echo
2、两次扫描
该命令适用于依次扫描无法完成其功能的变量。
第一步:对eval后面的命令进行扫描,执行变量替换,普通命令保留
第二步:执行变量替换后的命令串
3、获得最后一个参数
4、用eval技巧实现shell的控制结构for
用eval技巧实现shell的控制结构for
输出结果:
注意:bash里有两个很特殊的变量,它们保存了参数列表。
这里我使用了函数递归以及eval实现了for结构。
当执行eval $@时,它经历了步骤如下:
第1步,分割成eval $@
第6步,扩展$@为hostname
第11步,找到内置命令eval
重复一次命令行处理,第11步,找到hostname命令,执行。
eval是对Bash Shell命令行处理规则的灵活应用,进而构造"智能"命令实现复杂的功能。上面提及的命令是eval其中一个很普通的应用,它重复了1次命令行参数传递过程,纯粹地执行命令的命令。其实它是bash的难点,是高级bash程序员的必修技能。
Ⅱ 如何在 Linux 启动时自动执行命令或脚本
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。有用户想要在Linux启动时候自动执行命令脚本,应该怎么设置呢?这篇文章主要介绍了详解如何在 Linux 启动时自动执行命令或脚本,主要有两种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
方法步骤
在启动时执行 Linux 脚本
有两种传统的方法可以实现在启动时执行命令或脚本:
方法 #1 - 使用 cron 任务
除了常用格式(分 / 时 / 日 / 月 / 周)外,cron 调度器还支持 @reboot 指令。这个指令后面的参数是脚本(启动时要执行的那个脚本)的绝对路径。
然而,这种方法需要注意两点:
a) cron 守护进程必须处于运行状态(通常情况下都会运行),同时
b) 脚本或 crontab 文件必须包含需要的环境变量(如果有的话,参考 StackOverflow 获取更多详细内容)。
方法 #2 - 使用 /etc/rc.d/rc.local
这个方法对于 systemd-based 发行版 Linux 同样有效。不过,使用这个方法,需要授予 /etc/rc.d/rc.local 文件执行权限:
# chmod +x /etc/rc.d/rc.local
然后在这个文件底部添加脚本。
下图说明如何分别使用 cron 任务和 rc.local 运行两个示例脚本(/home/gacanepa/script1.sh 和 /home/gacanepa/script2.sh)。
script1.sh:
#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
script2.sh:
#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
*启动时执行 Linux 脚本 *
记住,一定要提前给两个示例脚本授予执行权限:
$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh
在登录或注销时执行 Linux 脚本
要在登录或注销时执行脚本,分别需要使用 ~.bash_profile 和 ~.bash_logout 文件。多数情况下,后者需要手动创建。在每个文件的底部,添加调用脚本代码,如前面例中所示,就可以实现这个功能。
补充:Linux基本命令
1.ls命令:
格式::ls [选项] [目录或文件]
功能:对于目录,列出该目录下的所有子目录与文件;对于文件,列出文件名以及其他信息。
常用选项:
-a :列出目录下的所有文件,包括以 . 开头的隐含文件。
-d :将目录像文件一样显示,而不是显示其他文件。
-i :输出文件的i节点的索引信息。
-k :以k字节的形式表示文件的大小。
-l :列出文件的详细信息。
-n :用数字的UID,GID代替名称。
-F : 在每个文件名后面附上一个字符以说明该文件的类型,“*”表示可执行的普通文 件;“/”表示目录;“@”表示符号链接;“l”表示FIFOS;“=”表示套接字。
2.cd命令
格式:cd [目录名称]
常用选项:
cd .. 返回上一级目录。
cd ../.. 将当前目录向上移动两级。
cd - 返回最近访问目录。
3.pwd命令
格式: pwd
功能:显示出当前工作目录的绝对路径。
相关阅读:Linux主要特性
完全兼容POSIX1.0标准
这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑。
多用户、多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行。
良好的界面
Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
支持多种平台
Ⅲ android手机指令对应的信息用代码执行显示,如输入:*#06#可以显示IMEI串码,不知道程序要调用什么代码
程序要调用使用代码为*#*#4636#*#* 可以进入工程模式,可以开手机网关,也可以查手机电池信息 是否原装。安卓手机系统代码命令有以下方法:
1、*#*#4636#*#* 显示手机信息、电池信息、电池记录、使用统计数据、WIFI信息
2*#*#7780#*#* 重设为原厂设定,不会删除预设程序及SD卡档案
3、*2667*3855# 重设为原厂设定,会删除SD卡所有档案
4、*#*#34971539#*#* 显示相机相机韧体版本,或更新相机韧体
5、*#*#7594#*#* 当长按关机按钮时,会出现一个切换手机模式的窗口,可以用这个代码,直接变成关机按钮
6、*#*#273283*255*663282*#*#* 开启一个能让你备份媒体文件的地方,例如相片、声音等
7、*#*#197328640#*#* 启动服务模式,可以测试手机部分设置及更改设定WLAN、GPS及蓝牙测试代码
8、*#*#232338#*#* 显示WIFI MAC地址
9、*#*#1472365#*#* GPS测试
10、*#*#1575#*#* 其他GPS测试
11、*#*#232331#*# 蓝牙测试
12、*#*#232337#*# 显示蓝牙装置地址
13、*#*#8255#*#* 启动GTALK服务监视器
各项硬件测试
1、*#*#0283#*#* Packet Loopback
2、*#*#0*#*#* LCD测试
3、*#*#0842#*#* 装置测试,如震动、亮度
4、*#*#2663#*#* 触控屏幕版本
5、*#*#2664#*#* 触控屏幕测试
6、*#*#0588#*#* 接近感应器测试
7、*#*#3264#*#* 内存版本
8、*#06# 显示手机原厂出厂串号(移动通信国际识别码)