1行のPerlコマンドを使用して、Bash変数のデータを変更したいと思います。問題は、Perlのワンライナーがパイプされたデータを受信していないことだと思います。
私はbash変更変数について知っています。findString=${findString//\//\\/}
Perlも動作させることに興味があります。私はPerlを知らないので、単純にしてください。
明確にするために、これらの2行は機能していません。テキストのタブを\tに変更したいと思います。Unixの行末を\nに変更したいのですが。
findString=$(cat "${findString}" | perl -0777pe 's/\t/\\t/g')
findString=$(cat "${findString}" | perl -0777pe 's/\n/\\n/g')
これが私のbashコードです:
#!/bin/bash
#The idea here is to change tab to \n
# and line End to \n
# debug info
export PS4='+(${BASH_SOURCE}:${LINENO}):'
# trace all the lines
#set -o xtrace
echo "---------------------- start ----------------------------------------"
# string to change.
# chops off the last \n
read -d '' findString <<"EOFEOFEOF"
# Usage: /Users/mac/Sites/bithoist/commandLine/BitHoist/BitHoist-PPC-MacOS-X [options] input... < input > output
# Options and inputs may be intermixed
-stdin # Use standard input as input file
-offset nn # Offset next input file data by nn
EOFEOFEOF
findString=$(cat "${findString}" | perl -0777pe 's/\t/\\t/g')
findString=$(cat "${findString}" | perl -0777pe 's/\n/\\n/g')
echo "------------> findString of length ${#findString} is:"
echo -E "${findString}"
echo