小编Ric*_*o M的帖子

文件描述符和 shell 脚本

我很难理解如何在 shell 脚本中使用文件描述符。

我知道基础知识,例如

exec 5 > /tmp/foo
Run Code Online (Sandbox Code Playgroud)

所以 fd 5 附加到 foo 用于写入。

exec 6 < /tmp/bar
Run Code Online (Sandbox Code Playgroud)

……阅读。

exec 5>&-
Run Code Online (Sandbox Code Playgroud)

...关闭fd。

这有什么作用呢?

#!/bin/bash

exec 5 > /tmp/foo 
exec 6 < /tmp/bar 

cat <&6 | while read a
do
     echo $a >&5
done
Run Code Online (Sandbox Code Playgroud)

据我所知,&5关闭了 fd,那么每次调用后输出仍然如何成功重定向?

这是复制意大利面来自:这里

它声称在简单的echo $a > file情况下使用它会使其更快,但我无法理解。我将不胜感激任何指向体面教程的链接。我的谷歌权力似乎让我失望。

bash io-redirection shell-script file-descriptors

35
推荐指数
1
解决办法
5万
查看次数

sed 反转两个字

echo "AXIS2C_HOME=/usr/local/Axis2C" | sed 's/\(^AXIS2C_HOME=\) \(.*\)/ \2 \1/'
Run Code Online (Sandbox Code Playgroud)

我期待的输出是/usr/local/Axis2C AXIS2C_HOME=.

我无法弄清楚我做错了什么。:(

sed

8
推荐指数
1
解决办法
3144
查看次数

如何在 RPM 规范文件中指定操作系统条件构建要求?

我正在尝试使用规范文件中的 BuildPrereq 标志来解决问题。如果操作系统是特定版本,我希望包含一些先决条件。就像是

if os == fedora 4
 BuildPrereq >= apr0.9
endif

if os == feodra 10
 BuildPrereq >= apr2.0
endif 
Run Code Online (Sandbox Code Playgroud)

有没有办法实现上述目标?我也想听到一些关于这个的替代方案。问题是我有一段代码不需要在几个版本的操作系统上编译。所以我正在考虑混合条件编译和上述内容。

干杯!

linux compiling fedora rpm

6
推荐指数
1
解决办法
4326
查看次数

SPEC %files 属性和 Shell 变量

我有一个规范文件,它解压缩了一个库,该库部署在 shell 中导出的位置。

IE

%file
${AXIS2_C}/bin/services/services.xml
Run Code Online (Sandbox Code Playgroud)

这失败了:

error: File not found: root/rpmbuild/BUILDROOT/i386/${AXIS2_C}/bin/services/services.xml
Run Code Online (Sandbox Code Playgroud)

即 shell 变量不会被扩展。有没有办法解决 ?

谢谢!

linux fedora rpm rhel

5
推荐指数
1
解决办法
7029
查看次数

配置 cron.hourly

我无法通过将 cron 作业放置在 /etc/cron.hourly 文件夹中来配置它来运行。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Run Code Online (Sandbox Code Playgroud)

cron.hourly 下的文件是:

lrwxrwxrwx 1 root root   40 2010-07-26 14:52 check -> /usr/local/xxxx/check-interface.bash
Run Code Online (Sandbox Code Playgroud)

文件权限:

-rwxr-xr-x 1 root root 1.6K 2010-09-13 11:22 /usr/local/xxxx/check-interface.bash
Run Code Online (Sandbox Code Playgroud)

var/log/cron 日志文件中似乎没有报告错误。没有提到脚本。:(

linux cron

5
推荐指数
1
解决办法
5623
查看次数