質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Q&A

解決済

1回答

1414閲覧

Mac ターミナルでバックスラッシュを残したままファイルの中身を読み込む方法

amzai

総合スコア1

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

0グッド

0クリップ

投稿2020/05/09 22:54

編集2020/05/10 10:10

前提・実現したいこと

Macのターミナルでwhile readを用いてtxtファイルの内容を一行ずつ実行したいと考えています。
具体的にはAspera Connectを用いてファイルをFTPサーバーからダウンロードを試みています。
txtファイル内には以下のようなパスが含まれており、バックスラッシュを入れてAspera Connect.Appへのパスを認識させようとしていますが、while readでターミナルに読み込む際に"Aspera\ Connect.app"のバックスラッシュが消えてしまい、パスが正常に認識できないようです。

txtファイルの中身

ascp -QT -l 300m -P33001 -i /Users/amzai/Applications/Aspera\ Connect.app/Contents/Resources/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/ERR121/006/ERR1211176/ERR1211176_1.fastq.gz .

該当のソースコード

while read LIST; do > $LIST; done < download.txt ascp: no remote host specified

試したこと

txtファイル内の行をコピペして実行したところ正常にダウンロードされました。
また、echo $LISTでtxtファイルの中身を1行ずつ取り出したところ、"Aspera Connect.app"に入れたバックスラッシュが抜けてしまい、正常なパスとして認識されていない様です。

該当のソースコード

while read LIST; do > echo $LIST; done < download.txt ascp -QT -l 300m -P33001 -i /Users/amzai/Applications/Aspera Connect.app/Contents/Resources/asperaweb_id_dsa.openssh era-fasp@fasp.sra.ebi.ac.uk:/vol1/fastq/ERR121/006/ERR1211176/ERR1211176_1.fastq.gz .

txtファイルから読み込む際にバックスラッシュを残したまま読み込む方法は無いでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

バックスラッシュを文字のまま読み込むには、read -r LISTです。

投稿2020/05/10 14:21

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

amzai

2020/05/10 18:04

ありがとうございます。 read -r LIST; do  > echo$LIST; done < download.txt でバックスラッシュ文字のまま読み込むことができました。 しかし、$LISTで実行したところ、no remote host specified になってしまい、ダウンロード自体はできませんでした。 他のところに原因があるでしょうか。
otn

2020/05/11 01:11

> $LISTで実行したところ の意味がわかりません。
otn

2020/05/11 01:19

ああ、読み込んだデータは実はコマンドでそれをそのまま実行したいと言う事ですね。 であれば、変数内のバックスラッシュに意味を持たせるために、 eval $LIST です。 でも、そもそも、変数に読み込まず、 sh download.txt あるいは source download.txt でいいのでは?
amzai

2020/05/11 09:14

ありがとうございます、eval $LISTでダウンロードできました。 source download.txtでもいけたので、その方が単純でした。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問