シェルスクリプトを学習しています。同じために、私はubuntu端末でcurlを使用してfacebookページをダウンロードしてみました。
t.shコンテンツ
vi@vi-Dell-7537(Desktop) $ cat t.sh
curlCmd="curl \"https://www.facebook.com/vivekkumar27june88\""
echo $curlCmd
($curlCmd) > ~/Desktop/fb.html
スクリプトを次のように実行するとエラーが発生する
vi@vi-Dell-7537(Desktop) $ ./t.sh
curl "https://www.facebook.com/vivekkumar27june88"
curl: (1) Protocol "https not supported or disabled in libcurl
しかし、コマンドを直接実行すると、正常に動作します。
vi@vi-Dell-7537(Desktop) $ curl "https://www.facebook.com/vivekkumar27june88"
<!DOCTYPE html>
<html lang="hi" id="facebook" class="no_js">
<head><meta chars.....
脚本で私がしている間違いを誰かに知らせていただければ幸いです。
Curlライブラリでsslが有効になっていることを確認しました。
かっこ内に埋め込まれたコマンドはサブシェルとして実行されるため、環境変数は失われます。
Evalを試してください:
curlCmd="curl 'https://www.facebook.com/vivekkumar27june88' > ~/Desktop/fb.html"
eval $curlCmd
スクリプトを作成するt.sh
この1行のみとして:
curl -k "https://www.facebook.com/vivekkumar27june88" -o ~/Desktop/fb.html
man curl
:
-k, --insecure
(SSL) This option explicitly allows curl to perform "insecure" SSL connections transfers.
All SSL connections are attempted to be made secure by using the CA certificate bundle
installed by default. This makes all connections considered "insecure" fail unless -k,
--insecure is used.
-o file
Store output in the given filename.
@Chepnerが言ったように、読んでください BashFAQ#50:コマンドを変数に入れようとしていますが、複雑なケースは常に失敗します! 。要約すると、このようなことをどのように行うべきかは、目標が何であるかによって異なります。
コマンドを保存する必要がない場合は、しないでください!コマンドを保存するのは難しいので、必要がなければ、その混乱をスキップして直接実行してください。
curl "https://www.facebook.com/vivekkumar27june88" > ~/Desktop/fb.html
コマンドの詳細を非表示にしたい場合、またはコマンドを頻繁に使用し、毎回書きたくない場合は、関数を使用します。
curlCmd() {
curl "https://www.facebook.com/vivekkumar27june88"
}
curlCmd > ~/Desktop/fb.html
コマンドを1つずつ作成する必要がある場合は、プレーンな文字列変数の代わりに配列を使用します。
curlCmd=(curl "https://www.facebook.com/vivekkumar27june88")
for header in "${extraHeaders[@]}"; do
curlCmd+=(-H "$header") # Add header options to the command
done
if [[ "$useSilentMode" = true ]]; then
curlCmd+=(-s)
fi
"${curlCmd[@]}" > ~/Desktop/fb.html # This is the standard idiom to expand an array
コマンドを印刷する場合、通常はset -x
を使用するのが最善の方法です。
set -x curl " https://www.facebook.com/vivekkumar27june88 ">〜/ Desktop/fb.html set + x
...しかし、必要に応じて、配列アプローチを使用して同様のことを行うこともできます。
printf "%q " "${curlCmd[@]}" # Print the array, quoting as needed
printf "\n"
"${curlCmd[@]}" > ~/Desktop/fb.html
次のソフトウェアをubuntu 14.04にインストールします
次に、Sudoサービスを実行します。Apache2の再起動を確認し、phpinfo()がcurl "cURL support:enabled"で有効になっていることを確認します。
次に、シェルスクリプトでコマンドを確認します
結果= curl -L "http://sitename.com/dashboard/?show=api&action=queue_proc&key=$JOBID" 2>/dev/null
エコー$ RESULT
応答が得られます。
ありがとうございます。