首页 > 系统相关 >Linux shell | 竖线管道符号放变量 无法访问'|': 没有那个文件或目录 无法访问'wc': 没有那个文件或目录

Linux shell | 竖线管道符号放变量 无法访问'|': 没有那个文件或目录 无法访问'wc': 没有那个文件或目录

时间:2023-07-21 12:02:13浏览次数:43  
标签:文件 iconv shell log 无法访问 Linux 目录 变量

工作中遇到一个实际问题,文本编码转换。


原始命令:

cat utf8.log | iconv -c -f UTF-8 -t GBK| tee gbk.log

因为某种(方便修改、方便替换)原因,想把 “| iconv -c -f UTF-8 -t GBK|”命令这段,想放到变量里,做到一处修改处处生效的效果。

pipe="| iconv -c -f UTF-8 -t GBK|"
cat utf8.log ${pipe} tee gbk.log

执行结果:

|:No such file or directory
tee:No such file or directory


分析:
按照变量替换规则, 正常情况下,pipe 变量应该时被替换,但是没有。
以为是双引号、单引号用的不对,替换测试都没有解决。
当时(202208)也没分析出原因,问了群里人也没人知道,度娘也没搜索到。

转折
前几天网上买了《UNIX/Linux/OS X中的 Shell 编程》书,到家随手翻看,
发现 245 页,讲的 eval 命令,和上面遇到的问题很像,赶紧翻看当时聊天记录(万幸记录还在)
但是图片被清理了,又根据时间,翻看了相册备份。找到了当时的问题和图片。庆幸。


根据大佬讲的才知道,没加 eval 命令(豁然开朗),shell 只扫描了一遍,就执行了,加上 eval 后,
shell 会扫描二次,把所有的东西都解析后,才会又去执行,这样就能达到想要的效果了。


原书例子,很简洁,容易明白:
image





参考:
《UNIX/Linux/OS X中的 Shell 编程》 P245页



标签:文件,iconv,shell,log,无法访问,Linux,目录,变量
From: https://www.cnblogs.com/wutou/p/17570934.html

相关文章

  • SVN的标准目录结构:trunk、branches、tags
    我们在一些著名开源项目的版本库中,通常可以看到trunk,branches,tags等三个目录。由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式。trunk是主分支,是日常开发进行的地方。branches是分支......
  • Linux删除log日志文件命令
    如下:1、删除文件夹及子目录下的日志文件find.-name'*.log*'|xargsrm2、忽略当前文件夹下的文件夹,可在-v后面添加  “/文件夹名称”,这里用log文件夹举例find.-name'*.log*'|grep-v/log|xargsrm这样就可以删除总文件夹下除了log文件夹以外的.log文件了......
  • Python文件操作
    Python文件操作一、文件的编码1.1背景thinking:计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?answer:使用编码技术(密码本)将内容翻译成0和1存入。编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。计算机......
  • C++ 操作文本文件
    C++操作文本文件C++把IO封装成类33​操作文本文件需要包含头文件#include<fstream>​写文件(输出流)步骤(四步)创建输出流对象​ofstreamfp;//创建输出流对象​打开文件,⚠打开模式缺省时如果文件不存在就创建,文件存在则截断内容​fp.open("文件路径",打开模式);......
  • 如何在EasyCVR平台播放MP4视频文件?两种方法!
    目前EasyCVR平台可支持国标GB28181、RTSP/Onvif、RTMP、海康Ehome、SDK等方式接入,这些接入方式主要是针对设备或视频流的接入。在有些项目现场也会遇到播放MP4视频文件的需求,今天我们来介绍下,如何在EasyCVR平台实现MP4视频文件的播放?这里介绍以下2种方式:1、使用OBS工具推流到Ea......
  • 树莓派py文件自动运行
     1.Python代码autowifi.py,放在/home/pi目录下:12345678#!/usr/bin/pythonimportos,time whileTrue:    if'192'notinos.popen('ifconfig|grep192').read():        print'\n******wifiisdown,restart...****......
  • [Linux][报错解决] 使用固定ip导致无法访问网络
    起因之前试了试代码......
  • windows mysql快速导入数据库文件
    Windows下快速导入MySQL数据库文件在开发和维护项目时,我们通常需要将数据库中的数据导入到本地进行分析和测试。对于MySQL数据库,我们可以通过一些简单的步骤来快速导入数据库文件。在本文中,我们将介绍在Windows环境下如何实现快速导入数据库文件的方法。步骤一:安装MySQL首先,我们......
  • windows java 递归找到文件夹,并修改名称
    WindowsJava递归找到文件夹并修改名称说明在这篇文章中,我将向你解释如何使用Java编写一个递归算法,用于在Windows操作系统中找到文件夹并修改其名称。我将使用Java在Windows环境中进行文件和目录操作。在这个过程中,你将学习如何使用Java的File类来遍历目录树、找到文件夹、修改......
  • 群晖nas docker 挂载tomcat目录
    前情使用场景描述:docker安装了tomcat,想要通过tomcat部署war包,但是无法上次war包到容器,于是使用了挂载;docker容器目录挂载:我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以实现宿主机和容器目录的双向数据自动同步; tomcat安装和挂载目录1.......