在Bash脚本中获取输出文件名

奥斯卡奖

我只想获取传递给bash脚本的输出文件的文件名(带有扩展名):

a=$1
b=$(basename -- "$a")
echo $b #for debug
if [ "$b" == "test" ]; then
    echo $b
fi

如果我输入:

./test.sh /home/oscarchase/test.sh > /home/oscarchase/test.txt

我想得到:

test.txt

在我的输出文件中,但我得到:

test.sh

我如何继续解析第一个参数以获得正确的名称?

切普纳

找不到直接在文件描述符1(标准输出)上打开的文件的名称bash这取决于您使用的操作系统。您可以使用lsofawk执行此操作;它不依赖于proc文件系统,尽管确切的调用可能有所不同,但是此命令在Linux和Mac OS X上均适用,因此至少可以移植。

output=$( lsof -p $$ -a -d 1 -F n | awk '/^n/ {print substr($1, 2)}' )

一些解释:

  • -p $$ 选择当前进程的打开文件
  • -d 1 仅选择文件描述符1
  • -a用于同时要求两者-p-d适用(默认值是显示符合任一条件的所有文件
  • -F n修改输出,以使每个字段只有一行,并以标识符字符作为前缀。这样,您将得到两行:一行以p进程ID开头并表示该进程ID,另一行以`n开头表示该文件的文件名。
  • awk命令只需选择以开头的行,n然后输出第一个字段减去initial即可n

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash,wget从输出文件名中删除逗号

来自分类Dev

Shell脚本从输入文件中获取部分文件名并将其转换为输出文件

来自分类Dev

如何获取Unix以列出文件中的行数并仅输出文件名?

来自分类Dev

在bash别名中指定gcc输出文件名

来自分类Dev

获取`grep`不输出文件名

来自分类Dev

bash for loop,在输出文件名中使用输入文件名

来自分类Dev

在Spark Streaming中更改输出文件名

来自分类Dev

在[split]中更改输出文件名

来自分类Dev

如何隐藏FFMPEG视频中的输出文件名

来自分类Dev

无法从PHP目录中输出文件名

来自分类Dev

如何隐藏FFMPEG视频中的输出文件名

来自分类Dev

sed输出文件名中的转义字符

来自分类Dev

如何在ffmpeg的输出文件名中包含输入文件名

来自分类Dev

定制输出文件名

来自分类Dev

ExifTool输出文件名

来自分类Dev

覆盖 xgettext 的输出文件名

来自分类Dev

在Bash脚本中解析文件名

来自分类Dev

多个输入文件名作为 R 中的输出文件名

来自分类Dev

bash,列出文件名,数组

来自分类Dev

从Bash中的目录获取文件名

来自分类Dev

如何使用QMake获取平台相关的输出文件名?

来自分类Dev

自动捕获文件名并将其用于R中的输出文件

来自分类Dev

awk:输出文件的文件名中包含^ M个字符

来自分类Dev

ffmpeg /批处理文件:输入格式保留在输出文件名中

来自分类Dev

zip和rar文件中的Codeigniter输出文件名

来自分类Dev

Bash Shell脚本从文件名中查找丢失的文件

来自分类Dev

如何在Activity中基于输入rvtFile定义输出文件名?

来自分类Dev

更改setup.py中的输出文件名(distutils.extension)

来自分类Dev

输出文件名与R中具有附加名称的输入相同

Related 相关文章

热门标签

归档