linux命令行中将一个命令的返回值赋给一个数组

linux命令行中将一个命令的返回值赋给一个数组,第1张

用basename命令去除前面的路径得到dirtmp

EXE=`basename $PWD`

注意:是反引号,键盘上ESC下方的那个按键。

这里$PWD是用的环境变量,也可以用pwd命令取得当前路径。

EXE=$(basename $(pwd))

$( ) 相当于一对反引号,在多重嵌套的情况下,使用$( ) 更直观,不容易搞错。

    a = char_recv[0];

    b = char_recv[1];

    c = char_recv[2];

    d = char_recv[3];

    e = char_recv[4];

在程序当前目录下建一个txt文件billtxt,文件内录入以下内容:

<pay_flowid>CTC4789</pay_flowid>

<>嗨,百度知道<dd>

<he和> hello linux

运行程序后在当前目录下生成strtxt文件,可以提取。

程序代码如下:

#include <stdioh>

#include <stringh>

#include <sys/typesh>

#include <sys/stath>

#include <fcntlh>

#define LEN 100                  / 字符数,可以根据需要自己定义 /

int main(void)

{

int fd;

long len,i,flag,j;

char num[LEN],string[LEN];

fd = open("billtxt",O_RDWR);

len = read(fd,num,LEN);    / read string for billtxt /

num[len] = '\0';

close(fd);

for(i=0,j=0;i<len;i++)

{

switch(num[i])

{

case '<':

{

flag=1;

break;

}

case '>':

{

flag=2;

break;

}

default:

{

if(flag==2)

{

string[j]=num[i];

j++;

}

}

}

}

string[j] = '\0';

fd = open("strtxt",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);

if(fd)

{

write(fd,string,j);

close(fd);

}

return 0;

}

Linux Bash中,数组变量的赋值有两种方法:

(1) name = (value1 valuen) // 此时下标从0开始;

(2) name[index] = value

下面以一个简单的脚本来说明,脚本内容如下:

#!/bin/bash

#定义数组

A=(a b c def)

#把数组按字符串显示输出

echo ${A[@]}

#屏幕显示:a b c def

#数组的长度表示${#A[]}

len=${#A[]}

echo ${#A[]}

#屏幕显示:4

#改变数组元素的值

A[3]='vivian'

echo ${A[]}

#屏幕显示:a b c vivian

#循环输出数组元素

i=0

while [ $i -lt $len ]

do

echo ${A[$i]}

let i++

done

#屏幕输出:

# a

# b

# c

# vivian

#循环输出数组元素的另一种写法,注意,在条件中,用#a[@]取其个数。

for ((i=0;i<${#A[@]};i=$i+1))

do

echo ${A[$i]}

done

#循环输出数组元素的另一种写法,注意,在条件中,引用变量一定要用双引号 ,否则报错。

for (( j=0; j<"$len"; j=j+1 )) //len表示数组长度值

do

  echo ${A[$j]}

done

#循环输出数组元素的另一种写法,注意,${A[]}不能写成$A ,$A默认是第一个元素。 如果A="a b c ded",就可以写$A,

for value in ${A[]}

do

echo $value

done

ps:

若a=(1 2 3 4)表示所有元素,则其只能用${a[]}或者${a[@]}来表示。在a=(1 2 3 4)中,$a只是表示第一个元素1。

若a="1 2 3 4"表示所有元素,则其可以用${a[]}或者${a[@]}或者$a来表示。

假如a="1 2 3 4",则array=($a)就相当于a=(1 2 3 4),不信你可以试试echo ${array[@]}。

上面的例子还可以改写成以下内容:

for value in $A

do

echo $value

done

以上就是关于linux命令行中将一个命令的返回值赋给一个数组全部的内容,包括:linux命令行中将一个命令的返回值赋给一个数组、linux c语言 char char_recv[100] = “1,2,3,4,5“ 我想单独获取这些数据并赋值给 a,b,c,d,e应该怎么做、linux C 截取字符串放到数组中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10146721.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存