请教一下如何用sh脚本获得一段命令输出的内容

sh/bash/dash/ksh/zsh等Shell脚本
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

请教一下如何用sh脚本获得一段命令输出的内容

#1

帖子 clm0081 » 2010-01-02 11:21

我想用sh脚本来获取fdisk -l -u /dev/loop? 的start值 请问 怎么抓取这一段代码 并将其保存到一个变量里?
先谢谢了
图片
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#2

帖子 eexpress » 2010-01-02 17:40

grep啊。awk啊。sed啊。
你这没通用性。
为什么是loop。。。
● 鸣学
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#3

帖子 clm0081 » 2010-01-02 17:53

额···我已经知道用awk可以定位段落 但是 我要怎么定位行呢? 以loop+数字作为定位关键字 定位行 然后再用awk定位段落就能抓出来了吧 但是 要怎么定位行呢? 什么命令可以达到这个效果呢?
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#4

帖子 eexpress » 2010-01-02 18:02

● sudo fdisk -l|awk '/dev\/loop/ {print $3}'
● 鸣学
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#5

帖子 clm0081 » 2010-01-03 23:38

代码: 全选

#!/bin/sh
startn=$(fdisk -l -u /dev/loop6|awk '/dev\/loop6p/ {print $3}')
offset=$((512*$startn))
echo "$offset"
这是我写的一段···但是会报错 ···计算那里 提取出变量值 不是就是在变量名前加个$么?
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#6

帖子 clm0081 » 2010-01-05 10:19

我~需要帮助~i need help
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#7

帖子 BigSnake.NET » 2010-01-05 10:28

计算前检查 startn 是什么
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#8

帖子 clm0081 » 2010-01-05 17:48

7楼说的是什么意思? 请说详细点 话说···我试验过用

代码: 全选

a=3
offset=$((512*$a))
但是也提示出错
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#9

帖子 BigSnake.NET » 2010-01-05 17:54

autumncat@autumncat-host:~
$ a=3
Exit status: 0
autumncat@autumncat-host:~
$ offset=$((512*$a))
Exit status: 0
autumncat@autumncat-host:~
$ echo $offset
1536
Exit status: 0


你用的是bash么...
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#10

帖子 clm0081 » 2010-01-05 21:41

[~]# a=3
[~]# offset=$((512*$a))
[~]# echo $offset
1536
[~]# cat w.sh
a=3
offset=$((512*$a))
echo $offset
[~]# sh -x w.sh
+ a=$'3\r'
")syntax error: operand expected (error token is "
[~]#

结果是这样的
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#11

帖子 BigSnake.NET » 2010-01-05 21:42

用 bash, 不要用 sh
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#12

帖子 clm0081 » 2010-01-07 0:53

[~]# bash w.sh
")syntax error: operand expected (error token is "

是这样的么?
还是不行的说
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#13

帖子 clm0081 » 2010-01-08 23:32

帮帮我吧
sky_sust
帖子: 2
注册时间: 2009-12-12 11:07

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#14

帖子 sky_sust » 2010-01-09 23:25

fdisk -l -u /dev/loop6 | sed -n '/^\/dev/' | awk '{print $3}'
头像
clm0081
帖子: 49
注册时间: 2008-09-24 12:04

Re: 请教一下如何用sh脚本获得一段命令输出的内容

#15

帖子 clm0081 » 2010-01-11 23:24

14楼的命令运行后是这样大结果

[/]# fdisk -l -u /dev/loop6 | sed -n '/^\/dev/' | awk '{print $3}'
sed:-e 表达式 #1,字符 8:missing command


继续问这个问题

[~]# bash w.sh
")syntax error: operand expected (error token is "

是这样的么?
还是不行的说
回复