linux 脚本学习笔记


1.清空文件

   >>C语言中

        ....

       char buf[10] = {0};

        fp = fopen(“file_name”, “w”);

       if(fp)

       {

               sprintf(buf, "\n");

               fput(buf, fp);

               fclose(fp);

      }

>>>>>>脚本语言

    :> file_name

一个简单的命令“:>” 就可以搞定~~

还有一种方法:

cat /dev/null > file_name

好处不多说了,呵呵~

-----------------------------------------------------------------------------------------------------------------------

bash中实现变量加1:

#!/bin/bash
# 使用10种不同的方法计数到11.

n=1; echo -n "$n "

let "n = $n + 1" # let "n = n + 1" 也可以.
echo -n "$n "


 : $((n = $n + 1))
 # ":" 是必需的, 因为如果没有":"的话,
 #+ Bash将会尝试把"$((n = $n + 1))"解释为一个命令.
 echo -n "$n "

 (( n = n + 1 ))
 # 上边这句是一种更简单方法.
 # 感谢, David Lombard, 指出这点.
 echo -n "$n "

 n=$(($n + 1))
 echo -n "$n "

 : $[ n = $n + 1 ]
 # ":" 是必需的, 因为如果没有":"的话,
 #+ Bash将会尝试把"$[ n = $n + 1 ]"解释为一个命令.
 # 即使"n"被初始化为字符串, 这句也能够正常运行.
 echo -n "$n "

 n=$[ $n + 1 ]
 # 即使"n"被初始化为字符串, 这句也能够正常运行.
 #* 应该尽量避免使用这种类型的结构, 因为它已经被废弃了, 而且不具可移植性.
 # 感谢, Stephane Chazelas.
 echo -n "$n "

 # 现在来一个C风格的增量操作.
 # 感谢, Frank Wang, 指出这点.

 let "n++" # let "++n" 也可以.
 echo -n "$n "

 (( n++ )) # (( ++n ) 也可以.
 echo -n "$n "

 : $(( n++ )) # : $(( ++n )) 也可以.
 echo -n "$n "

 : $[ n++ ] # : $[ ++n ]] 也可以.
 echo -n "$n "

 echo

 exit 0

----------------------------------------------------------------------------------------------------------------------------------------

脚本中循环的写法:

var=1

while :
#for var in [1-9]
do
#var=`expr $var + 1`
#var=$[$var + 1]
let "var++"

echo "------$var"

echo "$var"
if [ $var == 100 ]

#if [ $var -eq 100 ]
then
break
fi
done

-----------------------------------------------------------------------------------------------

if 语句中其他比较操作符:
整数比较
-eq
等于
if [ "$a" -eq "$b" ]
-ne
不等于
if [ "$a" -ne "$b" ]
-gt
大于
if [ "$a" -gt "$b" ]
-ge
大于等于
if [ "$a" -ge "$b" ]
-lt
小于
if [ "$a" -lt "$b" ]
-le
小于等于
if [ "$a" -le "$b" ]
<
小于(在双括号中使用)
(("$a" < "$b"))
<=
小于等于(在双括号中使用)
(("$a" <= "$b"))
>
大于(在双括号中使用)
(("$a" > "$b"))
>=
大于等于(在双括号中使用)
(("$a" >= "$b"))
字符串比较
=
等于
if [ "$a" = "$b" ]
==
等于
if [ "$a" == "$b" ]
与=等价.
==比较操作符在双中括号对和单中括号对中的行为是不同的.
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么结果将为真
2 [[ $a == "z*" ]] # 如果$a与z*相等(就是字面意思完全一样), 那
么结果为真.
3
4 [ $a == z* ] # 文件扩展匹配(file globbing)和单词分割有
效.
5 [ "$a" == "z*" ] # 如果$a与z*相等(就是字面意思完全一样), 那
么结果为真.
6
7 # 感谢, Stephane Chazelas
!=
不等号
if [ "$a" != "$b" ]
这个操作符将在[[ ... ]]结构中使用模式匹配.
<
小于, 按照ASCII字符进行排序
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注意"<"使用在[ ]结构中的时候需要被转义.
>
大于, 按照ASCII字符进行排序
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ]
注意">"使用在[ ]结构中的时候需要被转义.
参考例子 26-11, 这个例子展示了如何使用这个比较操作符.
-z
字符串为"null", 意思就是字符串长度为零
-n
字符串不为"null".
当-n使用在中括号中进行条件测试的时候, 必须要把字符串用双引号引用起
来. 如果采用了未引用的字符串来使用! -z, 甚至是在条件测试中括号(参
见例子 7-6)中只使用未引用的字符串的话, 一般也是可以工作的, 然而,
这是一种不安全的习惯. 习惯于使用引用的测试字符串才是正路.

----------------------------------------------------------------------------------------------------------------------------------------

使用cut从文件中提取内容:

test.c中有如下内容, 目的是提取红色的5这个字符,场景是这个5是一个结果,是动态的,打开这个文件的时间不同,可能会是7或者其他值

The paste command is the opposite of cut; it pastes multiple files together, separated (by default)
by tabs. This is not to be confused with the terms “cut” and “paste” when used in the context of a
graphical user environment (GUI). The paste command creates tabular data from multiple files, so
given three files it will put them together in three columns, the first from file1, the middle column
from file2, and the final column from file3-- 5. It can take as input as many files as you like.

-->cat test.c | grep file3 | cut -d ' ' -f 8 | cut -d '.' -f 1

执行这个命令就可以取出来这个结果当前值是5

解析:

cat test.c | grep file3   

#打开test.c这个文件并找到包含file3字串的这一行

cat test.c | grep file3 | cut -d ' ' -f 8 |

#在找到的这一行中,以空格为分隔符(-d选项),找到第8个(-f选项),这样执行的结果是“5.”

cat test.c | grep file3 | cut -d ' ' -f 8 | cut -d '.' -f 1

#上一命令执行的结果不是我们要的,但已经很接近了,再执行一次cut, 以'.'为分隔符,选择第一个域,

结果就是5了

**************************************************************

  cut命令从文件的每一行剪切字节、字符和字段并将它们写至标准输出。它是以文件的每一行作为处理对象的。 
 
  命令格式:cut [选项] [范围] 文件。选项用来指定单位(字节、字符还是字段),范围指定选项的位置。 
  常用的选项有:
  -b:指定以字节为单位显示选中内容
  -c:指定以字符为单位显示选中内容
  -f:指定以字段为单位显示选中内容
  -d:指定字段的分界符,默认为制表符
  其它的选项还有-n(仅和-b选项一起使用)、-s(仅和-f选项一起使用)

**************************************************************

--------------------------------------------------------------------------------------------------------------------------------------------------------------


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值