2022.8.24

问题描述

2022.8.24

最近精力一般,干事没啥动力,但是有些话说了就必须执行,就算不睡觉,自己说到做到,不要当做戏言,有时候不一定要把任务安排的满满的,让自己得到学习实验的快乐而不是得到相应的束缚。实验也是屡屡失败,找不到原因感觉很不是滋味。谁又是一帆风顺呢!

今日进步代码块

处理用户输入

怎么从脚本里面获得相应的数据?怎么查询脚本里面的参数数目?等。
向shell脚本传输数据的最基本方法就是使用命令行参数。命令行参数允许在运行脚本时向命令行添加数据。
例如:

$ ./addem 10 30 

本例向脚本addem传递了两个命令行参数(10和30)
我们传递了参数自然会关注参数的数目,规定$0是程序名,$1是第一个参数, 2 是第二个,以此类推。每个参数都需要以空格分开,我们会以 2是第二个,以此类推。每个参数都需要以空格分开,我们会以 2是第二个,以此类推。每个参数都需要以空格分开,我们会以{10} 花括号代表第九个以上的参数。$0 可以显示脚本名本身,但是有时候脚本名带了路径,这时候需要用basename命令来返回不包含路径的脚本名,例如:

$ cat test5b.sh
#! /bin/bash
#Using basename  with the $0 parameter
#
name=$(basename $0)
echo 
echo  The script name is : $name
#
$ bash/home/Christine/test5b.sh

The script name is :test5b.sh
$
$ ./test5b.sh

The script name is : test5b.sh
$

在我们运行脚本,想输入这些参数时,我们需要知道输入参数的数目,因为如果输入的参数为空值时,系统默认读取,就会出错。通常可以用-n参数来检验较少的参数。if [ -n "$1"]通过判断语句来打印参数。可以知道参数的个数与信息,但是如果参数过多,则不好用,我们会用$#直接统计脚本运行时输入了多少个参数。

$ cat test.sh
#!/bin/bash
# getting the number of parameters
#
echo There were $# parameters supplied.
$
$./tesh.sh
There were 0 parameters supplied.
$
$./tesh.sh 1 2 3 4 5 6
There were 6 parameters supplied.

同时可以运用if-then语句中-ne测试命令中参数数量。有意思的是${$#}并不能代表最后一个参数,我们常常用${!#}来代表最后一个参数。

抓取所有的数据

一般会使用$*与$@来访问所有的参数。前者会把所参数当做一个单词保存,后者则是分成很多独立的单词。这样使用for命令能遍历所有的参数。

$ cat test1.sh
#!/bin/bash
# testing $* and $@
#
echo
count=1
#
for param in "$*"
do
    echo  "\$* Parameter #$count = $param
    count=$[ $count +1]
done
#
echo
count=1
#
for param in "$@"
do
    echo  "\$@Parameter #$count = $param
    count=$[ $count +1]
done
$
$.test1.sh rich barabara katie jessica

$* Parameter #1 rich barbara katie jessica

$@ Parameter #1 = rich
$@ Parameter #2 = barbara 
$@ Parameter #3 = katie
$@ Parameter #4 = jessica
$

这是遍历命令行参数的一个好办法。

结语:明天最好的自己再见!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)