1

同様の質問があることは知っており、最初にそこで答えを検索しましたが、コードを少し機能させることができませんでした。

アイデアは、ユーザーがこのフォルダー内のファイルの名前よりもフォルダーの名前を入力し、プログラムがファイルの内容を変数に入れる必要があるということです。

echo " Type name of the folder where you want to edit file "
read folder
echo " Type name of the file you want to edit "
read file
#cont=$(cat "$folder"/"$file")
#cont=$(cat test/test1.txt)//its the name of existing variable and file so should work
cont=`cat test/test1.txt`
echo "$cont"

さまざまな解決策を試しましたが、現在のディレクトリ内のファイルに対してのみ機能します。たぶん、誰かが正しい構文、または可能な解決策のアイデアを持っているでしょう。前もって感謝します!

cont=cat "$folder"/"$file" を試した後、test/test1.txt: Text file busy.The problem isnt in file or folder variable or path that was used, it just doesn't pass value to variable itこちらです

4

2 に答える 2

1

必要ありませんecho $(cat...)。これは の無駄な使用ですecho。ただcat動作します。

#!/bin/sh

echo " Type name of the folder where you want to edit file "
read folder
echo " Type name of the file you want to edit "
read file
var=$(cat "$folder"/"$file")
echo "$var"

結果 :

$] ./test.sh
Type name of the folder where you want to edit file 
test1
Type name of the file you want to edit 
table
cat
dog

これは、入力フォルダーのフルパスを指定して別のディレクトリから実行した場合にも機能します。

$] ./path/to/test.sh
Type name of the folder where you want to edit file 
/path/to/folder
Type name of the file you want to edit
table
cat
dog
于 2013-10-02T21:11:51.423 に答える
1

シェル環境に問題があると思われます(最初の試みcont=$(cat "$folder"/"$file")はうまくいくはずです)、別の env を使用してみてください:

exec bash

それから

read -p "Type name of the folder where you want to edit file >>> " dir
read -p " Type name of the file you want to edit >>> " file

cont="$(< "$dir/$file")"

echo "$cont"

でOKをテストしました/etc/passwd

于 2013-10-02T21:12:04.853 に答える