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

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

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

MacOS(OSX)

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

Q&A

解決済

3回答

3748閲覧

bashの引数でバックスラッシュを使いたい

guitar-guitar

総合スコア42

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

MacOS(OSX)

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

0グッド

0クリップ

投稿2017/10/31 13:15

編集2017/10/31 15:17

以下のような単純なスクリプトで引数にバックスラッシュを含む文字列を指定した時に特殊文字として扱われてしまいます。
単純に文字列として扱う方法はないでしょうか?
例えば「\01_file\01_path001\00_path002」を引数とした時は「_file01_path00100_path002」となってしまいます。
期待している結果は元の「\01_file\01_path001\00_path002」になります。
ダブルコーテーションでくくれば文字列として扱える認識だったのですが。。。

Windows→Macのフォルダパス変換を目的でスクリプトを作成しています。

#!/bin/bash path="$1" echo "path"

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

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

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

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

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

archiver

2017/10/31 14:59

そもそもの話なんですが、なぜバックスラッシュを使いたいのでしょうか?
guitar-guitar

2017/10/31 15:05

Macとwindowsのフォルダパスの違いを変換するスクリプトを作成したい。と言うのが目的です。
archiver

2017/10/31 15:11

その背景を質問欄に追記した方がいいんじゃないですかね。それと、フォルダパスの違いの吸収はMac→Windowsでですか、それともWindows→Macですか、それとも両方向ですか?
guitar-guitar

2017/10/31 15:15

ご指摘ありがとうございます。windows→macのみです。
guest

回答3

0

スクリプトをどうやって起動していますか?

Bash

1./script.sh '\01_file\01_path001\00_path002'

と、一重引用符で囲んで指定してください。

投稿2017/10/31 13:47

otn

総合スコア84555

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

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

guitar-guitar

2017/10/31 14:41

なるほど。。。 ありがとうございます。 引数はフォルダパスを想定しており、パスコピーしてからそのまま貼り付けたいため 一重引用符でくくる手間は出来るだけ避けたいと思います。 スクリプトの中で一重引用符がつけられないか考えてみます。。。
otn

2017/10/31 15:16

> スクリプトの中で一重引用符がつけられないか考えてみます。。。 それは無理です。スクリプトに渡る段階で、\ は処理済みなので、どうしようも無いです。
guitar-guitar

2017/11/02 04:00

色々調べてみましたが、仰る通りスクリプトに渡る段階で、\ は処理済みのようですね。 教えていただいてありがとうございました。
guest

0

自己解決

引数ではなくpbpasteを使うことで解決しました。

bash

1pbpaste |sed -E 's/\+/smb:///' | sed -E 's/\///g' | tr -d '\n' | pbcopy

投稿2017/11/02 03:59

guitar-guitar

総合スコア42

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

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

0

Mac側でWindows上のパス情報をどのように使おうとしているのかわかりませんが、バックスラッシュをスラッシュに置き換えてみてはどうでしょうか。

\01_file\01_path001\00_path002

//01_file/01_path001/00_path002

(実はこれが最終目的だったりしますかね?)

投稿2017/10/31 16:03

archiver

総合スコア1557

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

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

guitar-guitar

2017/11/02 04:01

ありがとうございます。じつは変換自体は実装済みで。 引数として受け取れないところで困っていました。 説明不足で失礼しました。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問